Blame SOURCES/0001-doc-make-sure-cross-reference-ids-are-predictable.patch

6b8fee
From 4f3c02dc14300c0b8e51a55d627c57f73c108f64 Mon Sep 17 00:00:00 2001
6b8fee
From: Sumit Bose <sbose@redhat.com>
6b8fee
Date: Fri, 28 Sep 2018 10:36:19 +0200
6b8fee
Subject: [PATCH] doc: make sure cross-reference ids are predictable
6b8fee
6b8fee
To make sure the cross-reference ids are predictable in the
6b8fee
auto-generated DBus documentation as well the xsl and css files form the
6b8fee
gtk-doc package are updated as well.
6b8fee
---
6b8fee
 doc/manual/devhelp2.xsl                      | 173 ++++++++
6b8fee
 doc/manual/gtk-doc.xsl                       | 436 ++++++++-----------
6b8fee
 doc/manual/realm.xml                         |  14 +-
6b8fee
 doc/manual/realmd-guide-active-directory.xml |   4 +-
6b8fee
 doc/manual/realmd-guide-ipa.xml              |   2 +-
6b8fee
 doc/manual/realmd-guide-kerberos.xml         |   2 +-
6b8fee
 doc/manual/realmd.conf.xml                   |   4 +-
6b8fee
 doc/manual/static/gtk-doc.css                | 420 +++++++++++++-----
6b8fee
 8 files changed, 688 insertions(+), 367 deletions(-)
6b8fee
 create mode 100644 doc/manual/devhelp2.xsl
6b8fee
6b8fee
diff --git a/doc/manual/devhelp2.xsl b/doc/manual/devhelp2.xsl
6b8fee
new file mode 100644
6b8fee
index 0000000..bab6692
6b8fee
--- /dev/null
6b8fee
+++ b/doc/manual/devhelp2.xsl
6b8fee
@@ -0,0 +1,173 @@
6b8fee
+ 
6b8fee
+
6b8fee
+                version='1.0'
6b8fee
+                xmlns="http://www.devhelp.net/book"
6b8fee
+                xmlns:str="http://exslt.org/strings"
6b8fee
+                exclude-result-prefixes="str">
6b8fee
+
6b8fee
+  <xsl:template name="generate.devhelp2">
6b8fee
+    <xsl:call-template name="write.chunk">
6b8fee
+      <xsl:with-param name="filename">
6b8fee
+        <xsl:choose>
6b8fee
+          <xsl:when test="$gtkdoc.bookname">
6b8fee
+            <xsl:value-of select="$gtkdoc.bookname"/>
6b8fee
+          </xsl:when>
6b8fee
+          <xsl:otherwise>
6b8fee
+            <xsl:text>book</xsl:text>
6b8fee
+          </xsl:otherwise>
6b8fee
+        </xsl:choose>
6b8fee
+        <xsl:text>.devhelp2</xsl:text>
6b8fee
+      </xsl:with-param>
6b8fee
+      <xsl:with-param name="method" select="'xml'"/>
6b8fee
+      <xsl:with-param name="indent" select="'yes'"/>
6b8fee
+      <xsl:with-param name="encoding" select="'utf-8'"/>
6b8fee
+      <xsl:with-param name="doctype-public"/>
6b8fee
+      <xsl:with-param name="content">
6b8fee
+        <xsl:call-template name="devhelp2"/>
6b8fee
+      </xsl:with-param>
6b8fee
+    </xsl:call-template>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
+  <xsl:variable name="gtkdoc.refsect2" select="//refsect2"/>
6b8fee
+
6b8fee
+  <xsl:template name="devhelp2">
6b8fee
+    <xsl:variable name="title">
6b8fee
+      <xsl:apply-templates select="." mode="generate.devhelp2.toc.title.mode"/>
6b8fee
+    </xsl:variable>
6b8fee
+    <xsl:variable name="link">
6b8fee
+      <xsl:call-template name="href.target"/>
6b8fee
+    </xsl:variable>
6b8fee
+    <xsl:variable name="author">
6b8fee
+      <xsl:if test="articleinfo|bookinfo">
6b8fee
+        
6b8fee
+                             select="articleinfo|bookinfo"/>
6b8fee
+      </xsl:if>
6b8fee
+    </xsl:variable>
6b8fee
+    <xsl:variable name="online">
6b8fee
+      <xsl:value-of select="/book/bookinfo/releaseinfo/ulink[@role='online-location']/@url"/>
6b8fee
+    </xsl:variable>
6b8fee
+    
6b8fee
+                                           appendix|article|bibliography|
6b8fee
+                                           glossary|index|refentry|
6b8fee
+                                           bridgehead|sect1"/>
6b8fee
+
6b8fee
+    <book title="{$title}" link="{$link}" author="{$author}" name="{$gtkdoc.bookname}" version="2" language="c">
6b8fee
+      <xsl:if test="$online != ''">
6b8fee
+        <xsl:attribute name="online"><xsl:value-of select="$online"/></xsl:attribute>
6b8fee
+      </xsl:if>
6b8fee
+      <xsl:if test="$toc.nodes">
6b8fee
+        <chapters>
6b8fee
+          
6b8fee
+                               mode="generate.devhelp2.toc.mode"/>
6b8fee
+        </chapters>
6b8fee
+      </xsl:if>
6b8fee
+      <functions>
6b8fee
+        
6b8fee
+                             mode="generate.devhelp2.index.mode"/>
6b8fee
+        
6b8fee
+                             mode="generate.devhelp2.index.mode"/>
6b8fee
+        
6b8fee
+                             mode="generate.devhelp2.index.mode"/>
6b8fee
+      </functions>
6b8fee
+    </book>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
+  <xsl:template match="*" mode="generate.devhelp2.toc.mode">
6b8fee
+    <xsl:variable name="title">
6b8fee
+      <xsl:apply-templates select="." mode="generate.devhelp2.toc.title.mode"/>
6b8fee
+    </xsl:variable>
6b8fee
+    <xsl:variable name="target">
6b8fee
+      <xsl:variable name="anchor" select="title/anchor"/>
6b8fee
+      <xsl:choose>
6b8fee
+        <xsl:when test="$anchor">
6b8fee
+          <xsl:call-template name="href.target">
6b8fee
+            <xsl:with-param name="object" select="$anchor"/>
6b8fee
+          </xsl:call-template>
6b8fee
+        </xsl:when>
6b8fee
+        <xsl:otherwise>
6b8fee
+          <xsl:call-template name="href.target"/>
6b8fee
+        </xsl:otherwise>
6b8fee
+      </xsl:choose>
6b8fee
+    </xsl:variable>
6b8fee
+
6b8fee
+    <sub name="{$title}" link="{$target}">
6b8fee
+      
6b8fee
+                                   refentry|refsect|
6b8fee
+                                   bridgehead|part|chapter|glossary|index"
6b8fee
+                           mode="generate.devhelp2.toc.mode"/>
6b8fee
+    </sub>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
+  <xsl:template match="*" mode="generate.devhelp2.index.mode">
6b8fee
+    
6b8fee
+                                       term/literal|
6b8fee
+                                       entry[@role='enum_member_name']/para|
6b8fee
+                                       entry[@role='struct_member_name']/para/structfield/@id"/>
6b8fee
+    
6b8fee
+                                        entry[@role='enum_member_name']/para|
6b8fee
+                                        entry[@role='struct_member_name']/para/structfield"/>
6b8fee
+    <xsl:variable name="type" select="@role"/>
6b8fee
+    <xsl:variable name="condition" select="@condition"/>
6b8fee
+    <xsl:variable name="target">
6b8fee
+      <xsl:choose>
6b8fee
+        <xsl:when test="$anchor">
6b8fee
+          <xsl:call-template name="href.target">
6b8fee
+            <xsl:with-param name="object" select="$anchor"/>
6b8fee
+          </xsl:call-template>
6b8fee
+        </xsl:when>
6b8fee
+        <xsl:otherwise>
6b8fee
+          <xsl:call-template name="href.target"/>
6b8fee
+        </xsl:otherwise>
6b8fee
+      </xsl:choose>
6b8fee
+    </xsl:variable>
6b8fee
+    <keyword type="{$type}" name="{$title}" link="{$target}">
6b8fee
+      <xsl:if test="$condition">
6b8fee
+        <xsl:for-each select="str:split($condition,'|')">
6b8fee
+          <xsl:variable name="attrname">
6b8fee
+            <xsl:value-of select="substring-before(.,':')"/>
6b8fee
+          </xsl:variable>
6b8fee
+          <xsl:choose>
6b8fee
+            <xsl:when test="string-length($attrname)=0">
6b8fee
+              <xsl:variable name="attrname2">
6b8fee
+                <xsl:value-of select="."/>
6b8fee
+              </xsl:variable>
6b8fee
+              <xsl:attribute name="{$attrname2}"/>
6b8fee
+            </xsl:when>
6b8fee
+            <xsl:otherwise>
6b8fee
+              <xsl:attribute name="{$attrname}">
6b8fee
+                <xsl:value-of select="substring-after(.,':')"/>
6b8fee
+              </xsl:attribute>
6b8fee
+            </xsl:otherwise>
6b8fee
+          </xsl:choose>
6b8fee
+        </xsl:for-each>
6b8fee
+     </xsl:if>
6b8fee
+    </keyword>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
+  
6b8fee
+  <xsl:template match="article" mode="generate.devhelp2.toc.title.mode">
6b8fee
+    <xsl:value-of select="articleinfo/title"/>
6b8fee
+  </xsl:template>
6b8fee
+  <xsl:template match="book" mode="generate.devhelp2.toc.title.mode">
6b8fee
+    <xsl:value-of select="bookinfo/title"/>
6b8fee
+  </xsl:template>
6b8fee
+  <xsl:template match="refentry" mode="generate.devhelp2.toc.title.mode">
6b8fee
+    <xsl:value-of select="refmeta/refentrytitle"/>
6b8fee
+  </xsl:template>
6b8fee
+  <xsl:template match="*" mode="generate.devhelp2.toc.title.mode">
6b8fee
+    <xsl:value-of select="title"/>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
+  
6b8fee
+  <xsl:template match="articleinfo|bookinfo" mode="generate.devhelp2.authors">
6b8fee
+    <xsl:for-each select="authorgroup/author">
6b8fee
+      <xsl:value-of select="firstname"/>
6b8fee
+      <xsl:text> </xsl:text>
6b8fee
+      <xsl:value-of select="surname"/>
6b8fee
+      <xsl:if test="not(last())">
6b8fee
+        <xsl:text>, </xsl:text>
6b8fee
+      </xsl:if>
6b8fee
+    </xsl:for-each>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
+</xsl:stylesheet>
6b8fee
diff --git a/doc/manual/gtk-doc.xsl b/doc/manual/gtk-doc.xsl
6b8fee
index 9c0901b..3471e6c 100644
6b8fee
--- a/doc/manual/gtk-doc.xsl
6b8fee
+++ b/doc/manual/gtk-doc.xsl
6b8fee
@@ -5,20 +5,19 @@
6b8fee
                 version="1.0">
6b8fee
 
6b8fee
   
6b8fee
-  
6b8fee
-       "chunkfast.xsl", but I can see a difference -->
6b8fee
+  
6b8fee
+       "chunkfast.xsl", but I can't see a difference. Also it is not clear wheter
6b8fee
+       one should still set "chunk.fast". Again, no meassuable difference. -->
6b8fee
   <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
6b8fee
+  <xsl:include href="devhelp2.xsl"/>
6b8fee
   <xsl:include href="version-greater-or-equal.xsl"/>
6b8fee
 
6b8fee
-  
6b8fee
-	   match="glossentry/glossterm"
6b8fee
-	   use="."/>
6b8fee
-  
6b8fee
-	   match="para[@role='gallery']/link"
6b8fee
-	   use="@linkend"/>
6b8fee
+  <xsl:key name="acronym.key" match="glossentry/glossterm" use="."/>
6b8fee
+  <xsl:key name="gallery.key" match="para[@role='gallery']/link" use="@linkend"/>
6b8fee
 
6b8fee
   
6b8fee
   
6b8fee
+  <xsl:param name="admon.style"/>
6b8fee
   <xsl:param name="toc.section.depth">2</xsl:param>
6b8fee
   <xsl:param name="generate.toc">
6b8fee
     book	toc
6b8fee
@@ -28,16 +27,17 @@
6b8fee
     part	toc
6b8fee
     reference toc
6b8fee
   </xsl:param>
6b8fee
+  <xsl:param name="process.empty.source.toc">1</xsl:param>
6b8fee
 
6b8fee
   <xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
6b8fee
   <xsl:param name="chunker.output.indent" select="'yes'"/>
6b8fee
   <xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD HTML 4.01 Transitional//EN'"/>
6b8fee
   <xsl:param name="chunk.fast" select="1"/>
6b8fee
-  <xsl:param name="chunk.quietly" select="1"/>
6b8fee
 
6b8fee
   <xsl:param name="default.encoding" select="'UTF-8'"/>
6b8fee
   <xsl:param name="chapter.autolabel" select="0"/>
6b8fee
   <xsl:param name="use.id.as.filename" select="1"/>
6b8fee
+  <xsl:param name="generate.consistent.ids" select="1"/>
6b8fee
   <xsl:param name="html.ext" select="'.html'"/>
6b8fee
   <xsl:param name="refentry.generate.name" select="0"/>
6b8fee
   <xsl:param name="refentry.generate.title" select="1"/>
6b8fee
@@ -60,6 +60,9 @@
6b8fee
   <xsl:param name="gtkdoc.version" select="''"/>
6b8fee
   <xsl:param name="gtkdoc.bookname" select="''"/>
6b8fee
 
6b8fee
+  
6b8fee
+  <xsl:param name="admon.textlabel" select="0"/>
6b8fee
+
6b8fee
   
6b8fee
 
6b8fee
   
6b8fee
@@ -68,12 +71,8 @@
6b8fee
 
6b8fee
   <xsl:param name="gtkdoc.l10n.xml" select="document('http://docbook.sourceforge.net/release/xsl/current/common/en.xml')"/>
6b8fee
 
6b8fee
-  
6b8fee
-	   match="l:gentext[@key]"
6b8fee
-	   use="@key"/>
6b8fee
-  
6b8fee
-	   match="l:context[@name]"
6b8fee
-	   use="@name"/>
6b8fee
+  <xsl:key name="gtkdoc.gentext.key" match="l:gentext[@key]" use="@key"/>
6b8fee
+  <xsl:key name="gtkdoc.context.key" match="l:context[@name]" use="@name"/>
6b8fee
 
6b8fee
   <xsl:template name="gentext">
6b8fee
     <xsl:param name="key" select="local-name(.)"/>
6b8fee
@@ -250,7 +249,6 @@
6b8fee
         </xsl:if>
6b8fee
       </xsl:variable>
6b8fee
 
6b8fee
-
6b8fee
       <xsl:variable name="is.title-unnumbered">
6b8fee
         <xsl:if test="$is.title = 0 and $is.title-numbered = 0">
6b8fee
           <xsl:call-template name="gentext.template.exists">
6b8fee
@@ -309,52 +307,8 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
     </xsl:if>
6b8fee
     <xsl:apply-imports/>
6b8fee
 
6b8fee
-    
6b8fee
-    <xsl:call-template name="generate.index"/>
6b8fee
-  </xsl:template>
6b8fee
-
6b8fee
-  <xsl:template name="generate.index">
6b8fee
-    <xsl:call-template name="write.text.chunk">
6b8fee
-      <xsl:with-param name="filename" select="'index.sgml'"/>
6b8fee
-      <xsl:with-param name="content">
6b8fee
-        
6b8fee
-                             mode="generate.index.mode"/>
6b8fee
-        
6b8fee
-	
6b8fee
-	    The obvious way to write this is //anchor|//refentry|etc...
6b8fee
-	    The obvious way is slow because it causes multiple traversals
6b8fee
-	    in libxslt. This take about half the time.
6b8fee
-	-->
6b8fee
-	
6b8fee
-				         name() = 'refsect2' or name()='refsynopsisdiv' or
6b8fee
-					 name()='varlistentry']"
6b8fee
-                             mode="generate.index.mode"/>
6b8fee
-      </xsl:with-param>
6b8fee
-      <xsl:with-param name="default.encoding" select="'UTF-8'"/>
6b8fee
-      <xsl:with-param name="chunker.output.indent" select="'no'"/>
6b8fee
-    </xsl:call-template>
6b8fee
-  </xsl:template>
6b8fee
-
6b8fee
-  <xsl:template match="*" mode="generate.index.mode">
6b8fee
-    <xsl:if test="not(@href) and count(@id) > 0">
6b8fee
-      <xsl:text><ANCHOR id="</xsl:text>
6b8fee
-      <xsl:value-of select="@id"/>
6b8fee
-      <xsl:text>" href="</xsl:text>
6b8fee
-        <xsl:if test="$gtkdoc.bookname">
6b8fee
-          <xsl:value-of select="$gtkdoc.bookname"/>
6b8fee
-          <xsl:text>/</xsl:text>
6b8fee
-        </xsl:if>
6b8fee
-        <xsl:call-template name="href.target"/>
6b8fee
-        <xsl:text>">
</xsl:text>
6b8fee
-    </xsl:if>
6b8fee
-  </xsl:template>
6b8fee
-
6b8fee
-  <xsl:template match="/book/bookinfo/releaseinfo/ulink" mode="generate.index.mode">
6b8fee
-    <xsl:if test="@role='online-location'">
6b8fee
-      <xsl:text><ONLINE href="</xsl:text>
6b8fee
-      <xsl:value-of select="@url"/>
6b8fee
-      <xsl:text>">
</xsl:text>
6b8fee
-    </xsl:if>
6b8fee
+    
6b8fee
+    <xsl:call-template name="generate.devhelp2"/>
6b8fee
   </xsl:template>
6b8fee
 
6b8fee
   
6b8fee
@@ -387,6 +341,15 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
     <xsl:apply-imports/>
6b8fee
   </xsl:template>
6b8fee
 
6b8fee
+  <xsl:template name="user.head.title">
6b8fee
+   <xsl:param name="node" select="."/>
6b8fee
+   <xsl:param name="title"/>
6b8fee
+   <xsl:variable name="home" select="/*[1]"/>
6b8fee
+   <title>
6b8fee
+     <xsl:copy-of select="$title"/>: <xsl:apply-templates select="$home" mode="object.title.markup"/>
6b8fee
+   </title>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
   <xsl:template name="user.head.content">
6b8fee
     <xsl:if test="$gtkdoc.version">
6b8fee
       <meta name="generator" content="GTK-Doc V{$gtkdoc.version} (XML mode)"/>
6b8fee
@@ -399,10 +362,10 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
       
6b8fee
       <xsl:choose>
6b8fee
         <xsl:when test="$gtkdoc.version">
6b8fee
-          Generated by GTK-Doc V<xsl:copy-of select="$gtkdoc.version" />
6b8fee
+          <xsl:text>Generated by GTK-Doc V</xsl:text><xsl:copy-of select="$gtkdoc.version" />
6b8fee
         </xsl:when>
6b8fee
         <xsl:otherwise>
6b8fee
-          Generated by GTK-Doc
6b8fee
+          <xsl:text>Generated by GTK-Doc</xsl:text>
6b8fee
         </xsl:otherwise>
6b8fee
       </xsl:choose>
6b8fee
     
6b8fee
@@ -451,21 +414,119 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
 
6b8fee
     <xsl:if test="$suppress.navigation = '0' and $home != .">
6b8fee
       
6b8fee
-             summary = "Navigation header" cellpadding="2" cellspacing="2">
6b8fee
+             summary = "Navigation header" cellpadding="2" cellspacing="5">
6b8fee
         
6b8fee
+          
6b8fee
+            
6b8fee
+            <xsl:choose>
6b8fee
+              <xsl:when test="count($refsections) > 0">
6b8fee
+                Top
6b8fee
+                <xsl:if test="count($sect_desc) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='desc']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_object_hierarchy) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='object_hierarchy']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_impl_interfaces) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='impl_interfaces']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_prerequisites) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='prerequisites']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_derived_interfaces) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='derived_interfaces']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_implementations) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='implementations']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_properties) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='properties']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_child_properties) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='child_properties']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_style_properties) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='style_properties']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+                <xsl:if test="count($sect_signal_proto) > 0">
6b8fee
+                    | 
6b8fee
+                  
6b8fee
+                    <xsl:value-of select="./refsect1[@role='signal_proto']/title"/>
6b8fee
+                  
6b8fee
+                </xsl:if>
6b8fee
+              </xsl:when>
6b8fee
+              
6b8fee
+                   elements having a anchor element. maybe we can customize the xsl
6b8fee
+                   to automaticaly create local anchors
6b8fee
+              -->
6b8fee
+              <xsl:when test="count($glssections) > 0">
6b8fee
+                
6b8fee
+                <xsl:for-each select="./glossdiv">
6b8fee
+                  <xsl:if test="position() > 1">
6b8fee
+                     | 
6b8fee
+                  </xsl:if>
6b8fee
+                  
6b8fee
+                    <xsl:attribute name="href">#gls<xsl:value-of select="./title"/></xsl:attribute>
6b8fee
+                    <xsl:value-of select="./title"/>
6b8fee
+                  
6b8fee
+                </xsl:for-each>
6b8fee
+                
6b8fee
+              </xsl:when>
6b8fee
+              <xsl:when test="count($idxsections) > 0">
6b8fee
+                
6b8fee
+                <xsl:for-each select="./indexdiv/indexdiv">
6b8fee
+                  <xsl:if test="position() > 1">
6b8fee
+                     | 
6b8fee
+                  </xsl:if>
6b8fee
+                  
6b8fee
+                    <xsl:attribute name="href">#idx<xsl:value-of select="./title"/></xsl:attribute>
6b8fee
+                    <xsl:value-of select="./title"/>
6b8fee
+                  
6b8fee
+                </xsl:for-each>
6b8fee
+                
6b8fee
+              </xsl:when>
6b8fee
+            </xsl:choose>
6b8fee
+          
6b8fee
           <xsl:choose>
6b8fee
-            <xsl:when test="count($prev) > 0">
6b8fee
+            <xsl:when test="$home != .">
6b8fee
               
6b8fee
-                
6b8fee
+                
6b8fee
                   <xsl:attribute name="href">
6b8fee
                     <xsl:call-template name="href.target">
6b8fee
-                      <xsl:with-param name="object" select="$prev"/>
6b8fee
+                      <xsl:with-param name="object" select="$home"/>
6b8fee
                     </xsl:call-template>
6b8fee
                   </xsl:attribute>
6b8fee
-                  
6b8fee
+                  
6b8fee
                     <xsl:attribute name="alt">
6b8fee
                       <xsl:call-template name="gentext">
6b8fee
-                        <xsl:with-param name="key">nav-prev</xsl:with-param>
6b8fee
+                        <xsl:with-param name="key">nav-home</xsl:with-param>
6b8fee
                       </xsl:call-template>
6b8fee
                     </xsl:attribute>
6b8fee
                   
6b8fee
@@ -485,7 +546,7 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
                       <xsl:with-param name="object" select="$up"/>
6b8fee
                     </xsl:call-template>
6b8fee
                   </xsl:attribute>
6b8fee
-                  
6b8fee
+                  
6b8fee
                     <xsl:attribute name="alt">
6b8fee
                       <xsl:call-template name="gentext">
6b8fee
                         <xsl:with-param name="key">nav-up</xsl:with-param>
6b8fee
@@ -496,22 +557,22 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
               
6b8fee
             </xsl:when>
6b8fee
             <xsl:otherwise>
6b8fee
-               
6b8fee
+              
6b8fee
             </xsl:otherwise>
6b8fee
           </xsl:choose>
6b8fee
           <xsl:choose>
6b8fee
-            <xsl:when test="$home != .">
6b8fee
+            <xsl:when test="count($prev) > 0">
6b8fee
               
6b8fee
-                
6b8fee
+                
6b8fee
                   <xsl:attribute name="href">
6b8fee
                     <xsl:call-template name="href.target">
6b8fee
-                      <xsl:with-param name="object" select="$home"/>
6b8fee
+                      <xsl:with-param name="object" select="$prev"/>
6b8fee
                     </xsl:call-template>
6b8fee
                   </xsl:attribute>
6b8fee
-                  
6b8fee
+                  
6b8fee
                     <xsl:attribute name="alt">
6b8fee
                       <xsl:call-template name="gentext">
6b8fee
-                        <xsl:with-param name="key">nav-home</xsl:with-param>
6b8fee
+                        <xsl:with-param name="key">nav-prev</xsl:with-param>
6b8fee
                       </xsl:call-template>
6b8fee
                     </xsl:attribute>
6b8fee
                   
6b8fee
@@ -519,12 +580,9 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
               
6b8fee
             </xsl:when>
6b8fee
             <xsl:otherwise>
6b8fee
-               
6b8fee
+              
6b8fee
             </xsl:otherwise>
6b8fee
           </xsl:choose>
6b8fee
-          
6b8fee
-            <xsl:apply-templates select="$home" mode="object.title.markup"/>
6b8fee
-          
6b8fee
           <xsl:choose>
6b8fee
             <xsl:when test="count($next) > 0">
6b8fee
               
6b8fee
@@ -534,7 +592,7 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
                       <xsl:with-param name="object" select="$next"/>
6b8fee
                     </xsl:call-template>
6b8fee
                   </xsl:attribute>
6b8fee
-                  
6b8fee
+                  
6b8fee
                     <xsl:attribute name="alt">
6b8fee
                       <xsl:call-template name="gentext">
6b8fee
                         <xsl:with-param name="key">nav-next</xsl:with-param>
6b8fee
@@ -545,148 +603,10 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
               
6b8fee
             </xsl:when>
6b8fee
             <xsl:otherwise>
6b8fee
-               
6b8fee
+              
6b8fee
             </xsl:otherwise>
6b8fee
           </xsl:choose>
6b8fee
         
6b8fee
-        
6b8fee
-        <xsl:choose>
6b8fee
-          <xsl:when test="count($refsections) > 0">
6b8fee
-            
6b8fee
-              
6b8fee
-                <xsl:if test="count($sect_synopsis) > 0">
6b8fee
-                  Top
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_desc) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='desc']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_object_hierarchy) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='object_hierarchy']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_impl_interfaces) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='impl_interfaces']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_prerequisites) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='prerequisites']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_derived_interfaces) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='derived_interfaces']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_implementations) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='implementations']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_properties) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='properties']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_child_properties) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='child_properties']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_style_properties) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='style_properties']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_signal_proto) > 0">
6b8fee
-                   | 
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@role='signal_proto']/title"/>
6b8fee
-                  
6b8fee
-                </xsl:if>
6b8fee
-                
6b8fee
-                <xsl:if test="count($sect_details) > 0">
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@id='details']/title"/>
6b8fee
-                  
6b8fee
-                   | 
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_property_details) > 0">
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@id='property_details']/title"/>
6b8fee
-                  
6b8fee
-                   | 
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_child_property_details) > 0">
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@id='property_child_details']/title"/>
6b8fee
-                  
6b8fee
-                   | 
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_style_property_details) > 0">
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@id='style_property_details']/title"/>
6b8fee
-                  
6b8fee
-                   | 
6b8fee
-                </xsl:if>
6b8fee
-                <xsl:if test="count($sect_signals) > 0">
6b8fee
-                  
6b8fee
-                    <xsl:value-of select="./refsect1[@id='signals']/title"/>
6b8fee
-                  
6b8fee
-                   | 
6b8fee
-                </xsl:if>
6b8fee
-                -->
6b8fee
-              
6b8fee
-            
6b8fee
-          </xsl:when>
6b8fee
-          
6b8fee
-          elements having a anchor element. maybe we can customize the xsl
6b8fee
-          to automaticaly create local anchors
6b8fee
-          -->
6b8fee
-          <xsl:when test="count($glssections) > 0">
6b8fee
-            
6b8fee
-              
6b8fee
-                 <xsl:for-each select="./glossdiv">
6b8fee
-                   <xsl:if test="position() > 1">
6b8fee
-                      | 
6b8fee
-                   </xsl:if>
6b8fee
-                   
6b8fee
-                     <xsl:attribute name="href">#gls<xsl:value-of select="./title"/></xsl:attribute>
6b8fee
-                     <xsl:value-of select="./title"/>
6b8fee
-                   
6b8fee
-                 </xsl:for-each>
6b8fee
-              
6b8fee
-            
6b8fee
-          </xsl:when>
6b8fee
-          <xsl:when test="count($idxsections) > 0">
6b8fee
-            
6b8fee
-              
6b8fee
-                 <xsl:for-each select="./indexdiv/indexdiv">
6b8fee
-                   <xsl:if test="position() > 1">
6b8fee
-                      | 
6b8fee
-                   </xsl:if>
6b8fee
-                   
6b8fee
-                     <xsl:attribute name="href">#idx<xsl:value-of select="./title"/></xsl:attribute>
6b8fee
-                     <xsl:value-of select="./title"/>
6b8fee
-                   
6b8fee
-                 </xsl:for-each>
6b8fee
-              
6b8fee
-            
6b8fee
-          </xsl:when>
6b8fee
-        </xsl:choose>
6b8fee
       
6b8fee
     </xsl:if>
6b8fee
   </xsl:template>
6b8fee
@@ -758,32 +678,32 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
       
6b8fee
         
6b8fee
           <xsl:call-template name="anchor"/>
6b8fee
-            <xsl:choose>
6b8fee
-              <xsl:when test="$refentry.generate.name != 0">
6b8fee
-                

6b8fee
-                <xsl:call-template name="gentext">
6b8fee
-                    <xsl:with-param name="key" select="'RefName'"/>
6b8fee
-                  </xsl:call-template>
6b8fee
-                
6b8fee
-              </xsl:when>
6b8fee
-              <xsl:when test="$refentry.generate.title != 0">
6b8fee
-                

6b8fee
-                  <xsl:choose>
6b8fee
-                    <xsl:when test="../refmeta/refentrytitle">
6b8fee
-                      <xsl:apply-templates select="../refmeta/refentrytitle"/>
6b8fee
-                    </xsl:when>
6b8fee
-                    <xsl:otherwise>
6b8fee
-                      <xsl:apply-templates select="refname[1]"/>
6b8fee
-                    </xsl:otherwise>
6b8fee
-                  </xsl:choose>
6b8fee
-                
6b8fee
-              </xsl:when>
6b8fee
-            </xsl:choose>
6b8fee
-            

6b8fee
+          <xsl:choose>
6b8fee
+            <xsl:when test="$refentry.generate.name != 0">
6b8fee
+              

6b8fee
+              <xsl:call-template name="gentext">
6b8fee
+                  <xsl:with-param name="key" select="'RefName'"/>
6b8fee
+                </xsl:call-template>
6b8fee
+              
6b8fee
+            </xsl:when>
6b8fee
+            <xsl:when test="$refentry.generate.title != 0">
6b8fee
+              

6b8fee
+                <xsl:choose>
6b8fee
+                  <xsl:when test="../refmeta/refentrytitle">
6b8fee
+                    <xsl:apply-templates select="../refmeta/refentrytitle"/>
6b8fee
+                  </xsl:when>
6b8fee
+                  <xsl:otherwise>
6b8fee
+                    <xsl:apply-templates select="refname[1]"/>
6b8fee
+                  </xsl:otherwise>
6b8fee
+                </xsl:choose>
6b8fee
+              
6b8fee
+            </xsl:when>
6b8fee
+          </xsl:choose>
6b8fee
+          

6b8fee
             <xsl:apply-templates/>
6b8fee
           

6b8fee
         
6b8fee
-        
6b8fee
+        
6b8fee
           <xsl:choose>
6b8fee
             <xsl:when test="../refmeta/refmiscinfo/inlinegraphic">
6b8fee
               <xsl:apply-templates select="../refmeta/refmiscinfo/inlinegraphic"/>
6b8fee
@@ -795,7 +715,7 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
                    - use it here
6b8fee
                 -->
6b8fee
               <xsl:variable name="refentryid" select="../@id"/>
6b8fee
-	      <xsl:apply-templates select="key('gallery.key', $refentryid)/inlinegraphic"/>
6b8fee
+              <xsl:apply-templates select="key('gallery.key', $refentryid)/inlinegraphic"/>
6b8fee
             </xsl:otherwise>
6b8fee
           </xsl:choose>
6b8fee
         
6b8fee
@@ -803,6 +723,21 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
      
6b8fee
   </xsl:template>
6b8fee
 
6b8fee
+  
6b8fee
+       see bug/729911, https://sourceforge.net/p/docbook/bugs/1358/
6b8fee
+       fixed in: https://sourceforge.net/p/docbook/code/9962/
6b8fee
+  -->
6b8fee
+  <xsl:template match="refpurpose" mode="no.anchor.mode">
6b8fee
+    <xsl:if test="node()">
6b8fee
+      <xsl:text> </xsl:text>
6b8fee
+      <xsl:call-template name="dingbat">
6b8fee
+        <xsl:with-param name="dingbat">em-dash</xsl:with-param>
6b8fee
+      </xsl:call-template>
6b8fee
+      <xsl:text> </xsl:text>
6b8fee
+      <xsl:apply-templates mode="no.anchor.mode"/>
6b8fee
+    </xsl:if>
6b8fee
+  </xsl:template>
6b8fee
+
6b8fee
   
6b8fee
   <xsl:template match="indexdiv">
6b8fee
     <xsl:attribute name="name">idx<xsl:value-of select="./title"/></xsl:attribute>
6b8fee
@@ -825,12 +760,12 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
       
6b8fee
         <xsl:for-each select="../ulink[@role='extralinks']">
6b8fee
           <xsl:if test="position() = 1">[ </xsl:if>
6b8fee
-          <xsl:if test="position() > 1"> | </xsl:if>
6b8fee
+          <xsl:if test="position() > 1">  | </xsl:if>
6b8fee
           
6b8fee
             <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
6b8fee
             <xsl:copy-of select="text()" />
6b8fee
           
6b8fee
-          <xsl:if test="position() = last()"> ]</xsl:if>
6b8fee
+          <xsl:if test="position() = last()">  ]</xsl:if>
6b8fee
         </xsl:for-each>
6b8fee
       
6b8fee
     </xsl:if>
6b8fee
@@ -861,11 +796,6 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
     <xsl:param name="acronym">
6b8fee
       <xsl:apply-templates/>
6b8fee
     </xsl:param>
6b8fee
-    
6b8fee
-      We use for-each to change context to the database document because key()
6b8fee
-      only locates elements in the same document as the context node!
6b8fee
-    -->
6b8fee
-
6b8fee
     <xsl:param name="value" >
6b8fee
       <xsl:value-of select="key('acronym.key', $acronym)/../glossdef/para[1]" />
6b8fee
     </xsl:param>
6b8fee
@@ -878,7 +808,7 @@ Get a newer version at http://docbook.sourceforge.net/projects/xsl/
6b8fee
         
6b8fee
           <xsl:attribute name="href">
6b8fee
             <xsl:text>http://foldoc.org/</xsl:text>
6b8fee
-	        <xsl:value-of select="$acronym"/>
6b8fee
+	          <xsl:value-of select="$acronym"/>
6b8fee
           </xsl:attribute>
6b8fee
           <xsl:call-template name="inline.charseq"/>
6b8fee
         
6b8fee
diff --git a/doc/manual/realm.xml b/doc/manual/realm.xml
6b8fee
index 9d9136a..7b73331 100644
6b8fee
--- a/doc/manual/realm.xml
6b8fee
+++ b/doc/manual/realm.xml
6b8fee
@@ -49,7 +49,7 @@
6b8fee
 	</cmdsynopsis>
6b8fee
 </refsynopsisdiv>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-description">
6b8fee
 	<title>Description</title>
6b8fee
 	<para><command>realm</command> is a command line tool that
6b8fee
 	can be used to manage enrollment in kerberos realms, like Active
6b8fee
@@ -81,7 +81,7 @@
6b8fee
 
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-discover">
6b8fee
 	<title>Discover</title>
6b8fee
 
6b8fee
 	<para>Discover a realm and its capabilities.</para>
6b8fee
@@ -138,7 +138,7 @@ $ realm discover domain.example.com
6b8fee
 
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-join">
6b8fee
 	<title>Join</title>
6b8fee
 
6b8fee
 	<para>Configure the local machine for use with a realm.</para>
6b8fee
@@ -263,7 +263,7 @@ $ realm join --user=admin --computer-ou=OU=Special domain.example.com
6b8fee
 
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-leave">
6b8fee
 	<title>Leave</title>
6b8fee
 
6b8fee
 	<para>Deconfigure the local machine for use with a realm.</para>
6b8fee
@@ -313,7 +313,7 @@ $ realm leave domain.example.com
6b8fee
 
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-list">
6b8fee
 	<title>List</title>
6b8fee
 
6b8fee
 	<para>List all the discovered and configured realms.</para>
6b8fee
@@ -345,7 +345,7 @@ $ realm list
6b8fee
 	</variablelist>
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-permit">
6b8fee
 	<title>Permit</title>
6b8fee
 
6b8fee
 	<para>Permit local login by users of the realm.</para>
6b8fee
@@ -392,7 +392,7 @@ $ realm permit --withdraw user@example.com
6b8fee
 
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="man-deny">
6b8fee
 	<title>Deny</title>
6b8fee
 
6b8fee
 	<para>Deny local login by realm accounts.</para>
6b8fee
diff --git a/doc/manual/realmd-guide-active-directory.xml b/doc/manual/realmd-guide-active-directory.xml
6b8fee
index 362cf94..c88e8af 100644
6b8fee
--- a/doc/manual/realmd-guide-active-directory.xml
6b8fee
+++ b/doc/manual/realmd-guide-active-directory.xml
6b8fee
@@ -69,7 +69,7 @@ $ <command>realm discover --verbose domain.example.com</command>
6b8fee
 		<ulink url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html">Winbind</ulink>.
6b8fee
 		By default SSSD is used.</para>
6b8fee
 
6b8fee
-		<section>
6b8fee
+		<section id="using-sssd-with-active-directory">
6b8fee
 			<title>Using SSSD with Active Directory</title>
6b8fee
 			<para><ulink url="https://fedorahosted.org/sssd/">SSSD</ulink>
6b8fee
 			provides client software for various kerberos and/or LDAP
6b8fee
@@ -91,7 +91,7 @@ $ <command>realm join --client-software=sssd domain.example.com</command>
6b8fee
 			</informalexample>
6b8fee
 		</section>
6b8fee
 
6b8fee
-		<section>
6b8fee
+		<section id="using-winbind-with-active-directory">
6b8fee
 			<title>Using Winbind with Active Directory</title>
6b8fee
 			<para>Samba
6b8fee
 			<ulink url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html">Winbind</ulink>
6b8fee
diff --git a/doc/manual/realmd-guide-ipa.xml b/doc/manual/realmd-guide-ipa.xml
6b8fee
index bba6504..c3ad450 100644
6b8fee
--- a/doc/manual/realmd-guide-ipa.xml
6b8fee
+++ b/doc/manual/realmd-guide-ipa.xml
6b8fee
@@ -13,7 +13,7 @@
6b8fee
 	users locally, and log into the local machine with IPA domain
6b8fee
 	credentials.</para>
6b8fee
 
6b8fee
-	<section>
6b8fee
+	<section id="discovering-ipa-domains">
6b8fee
 		<title>Discovering IPA domains</title>
6b8fee
 		<para><command>realmd</command> discovers which domains or
6b8fee
 		realms it can use or configure. It can discover and identify
6b8fee
diff --git a/doc/manual/realmd-guide-kerberos.xml b/doc/manual/realmd-guide-kerberos.xml
6b8fee
index a57e964..5b9d4b1 100644
6b8fee
--- a/doc/manual/realmd-guide-kerberos.xml
6b8fee
+++ b/doc/manual/realmd-guide-kerberos.xml
6b8fee
@@ -12,7 +12,7 @@
6b8fee
 	Since there is no standard way to enroll a computer against a Kerberos
6b8fee
 	server, it is not possible to do this with <command>realmd</command>.</para>
6b8fee
 
6b8fee
-	<section>
6b8fee
+	<section id="discovering-kerberos-realms">
6b8fee
 		<title>Discovering Kerberos realms</title>
6b8fee
 		<para><command>realmd</command> discovers which domains or
6b8fee
 		realms it can use or configure. It can discover and identify
6b8fee
diff --git a/doc/manual/realmd.conf.xml b/doc/manual/realmd.conf.xml
6b8fee
index a2b577c..f0b0879 100644
6b8fee
--- a/doc/manual/realmd.conf.xml
6b8fee
+++ b/doc/manual/realmd.conf.xml
6b8fee
@@ -28,7 +28,7 @@
6b8fee
 	<refpurpose>Tweak behavior of realmd</refpurpose>
6b8fee
 </refnamediv>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="realmd-conf-file">
6b8fee
 	<title>Configuration File</title>
6b8fee
 
6b8fee
 	<para><command>realmd</command> can be tweaked by network administrators
6b8fee
@@ -297,7 +297,7 @@ DOMAIN\user:*:13445:13446:Name:/home/DOMAIN/user:/bin/bash
6b8fee
 
6b8fee
 </refsect1>
6b8fee
 
6b8fee
-<refsect1>
6b8fee
+<refsect1 id="realmd-conf-specific-settings">
6b8fee
 	<title>Realm specific settings</title>
6b8fee
 	<para>These options should go in an section with the same name
6b8fee
 	as the realm in the <filename>/etc/realmd.conf</filename> file.
6b8fee
diff --git a/doc/manual/static/gtk-doc.css b/doc/manual/static/gtk-doc.css
6b8fee
index 5618926..af6ce9c 100644
6b8fee
--- a/doc/manual/static/gtk-doc.css
6b8fee
+++ b/doc/manual/static/gtk-doc.css
6b8fee
@@ -1,15 +1,23 @@
6b8fee
+body
6b8fee
+{
6b8fee
+  font-family: cantarell, sans-serif;
6b8fee
+}
6b8fee
 .synopsis, .classsynopsis
6b8fee
 {
6b8fee
   /* tango:aluminium 1/2 */
6b8fee
   background: #eeeeec;
6b8fee
-  border: solid 1px #d3d7cf;
6b8fee
+  background: rgba(238, 238, 236, 0.5);
6b8fee
+  border: solid 1px rgb(238, 238, 236);
6b8fee
   padding: 0.5em;
6b8fee
 }
6b8fee
 .programlisting
6b8fee
 {
6b8fee
   /* tango:sky blue 0/1 */
6b8fee
+  /* fallback for no rgba support */
6b8fee
   background: #e6f3ff;
6b8fee
   border: solid 1px #729fcf;
6b8fee
+  background: rgba(114, 159, 207, 0.1);
6b8fee
+  border: solid 1px rgba(114, 159, 207, 0.2);
6b8fee
   padding: 0.5em;
6b8fee
 }
6b8fee
 .variablelist
6b8fee
@@ -22,86 +30,8 @@
6b8fee
   vertical-align: top;
6b8fee
 }
6b8fee
 
6b8fee
-@media screen {
6b8fee
-  sup a.footnote
6b8fee
-  {
6b8fee
-    position: relative;
6b8fee
-    top: 0em ! important;
6b8fee
-  }
6b8fee
-  /* this is needed so that the local anchors are displayed below the naviagtion */
6b8fee
-  div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
6b8fee
-  {
6b8fee
-    display: inline-block;
6b8fee
-    position: relative;
6b8fee
-    top:-5em;
6b8fee
-  }
6b8fee
-  /* this seems to be a bug in the xsl style sheets when generating indexes */
6b8fee
-  div.index div.index
6b8fee
-  {
6b8fee
-    top: 0em;
6b8fee
-  }
6b8fee
-  /* make space for the fixed navigation bar and add space at the bottom so that
6b8fee
-   * link targets appear somewhat close to top
6b8fee
-   */
6b8fee
-  body
6b8fee
-  {
6b8fee
-    padding-top: 3.2em;
6b8fee
-    padding-bottom: 20em;
6b8fee
-  }
6b8fee
-  /* style and size the navigation bar */
6b8fee
-  table.navigation#top
6b8fee
-  {
6b8fee
-    position: fixed;
6b8fee
-    /* tango:scarlet red 0/1 */
6b8fee
-    background: #ffe6e6;
6b8fee
-    border: solid 1px #ef2929;
6b8fee
-    margin-top: 0;
6b8fee
-    margin-bottom: 0;
6b8fee
-    top: 0;
6b8fee
-    left: 0;
6b8fee
-    height: 3em;
6b8fee
-    z-index: 10;
6b8fee
-  }
6b8fee
-  .navigation a, .navigation a:visited
6b8fee
-  {
6b8fee
-    /* tango:scarlet red 3 */
6b8fee
-    color: #a40000;
6b8fee
-  }
6b8fee
-  .navigation a:hover
6b8fee
-  {
6b8fee
-    /* tango:scarlet red 1 */
6b8fee
-    color: #ef2929;
6b8fee
-  }
6b8fee
-  td.shortcuts
6b8fee
-  {
6b8fee
-    /* tango:scarlet red 1 */
6b8fee
-    color: #ef2929;
6b8fee
-    font-size: 80%;
6b8fee
-    white-space: nowrap;
6b8fee
-  }
6b8fee
-}
6b8fee
-@media print {
6b8fee
-  table.navigation {
6b8fee
-    visibility: collapse;
6b8fee
-    display: none;
6b8fee
-  }
6b8fee
-  div.titlepage table.navigation {
6b8fee
-    visibility: visible;
6b8fee
-    display: table;
6b8fee
-    /* tango:scarlet red 0/1 */
6b8fee
-    background: #ffe6e6;
6b8fee
-    border: solid 1px #ef2929;
6b8fee
-    margin-top: 0;
6b8fee
-    margin-bottom: 0;
6b8fee
-    top: 0;
6b8fee
-    left: 0;
6b8fee
-    height: 3em;
6b8fee
-  }
6b8fee
-}
6b8fee
-
6b8fee
-.navigation .title
6b8fee
-{
6b8fee
-  font-size: 200%;
6b8fee
+span.nowrap {
6b8fee
+  white-space: nowrap;
6b8fee
 }
6b8fee
 
6b8fee
 div.gallery-float
6b8fee
@@ -131,6 +61,72 @@ a:hover
6b8fee
   color: #729fcf;
6b8fee
 }
6b8fee
 
6b8fee
+div.informaltable table
6b8fee
+{
6b8fee
+  border-collapse: separate;
6b8fee
+  border-spacing: 1em 0.3em;
6b8fee
+  border: none;
6b8fee
+}
6b8fee
+
6b8fee
+div.informaltable table td, div.informaltable table th
6b8fee
+{
6b8fee
+  vertical-align: top;
6b8fee
+}
6b8fee
+
6b8fee
+.function_type,
6b8fee
+.variable_type,
6b8fee
+.property_type,
6b8fee
+.signal_type,
6b8fee
+.parameter_name,
6b8fee
+.struct_member_name,
6b8fee
+.union_member_name,
6b8fee
+.define_keyword,
6b8fee
+.datatype_keyword,
6b8fee
+.typedef_keyword
6b8fee
+{
6b8fee
+  text-align: right;
6b8fee
+}
6b8fee
+
6b8fee
+/* dim non-primary columns */
6b8fee
+.c_punctuation,
6b8fee
+.function_type,
6b8fee
+.variable_type,
6b8fee
+.property_type,
6b8fee
+.signal_type,
6b8fee
+.define_keyword,
6b8fee
+.datatype_keyword,
6b8fee
+.typedef_keyword,
6b8fee
+.property_flags,
6b8fee
+.signal_flags,
6b8fee
+.parameter_annotations,
6b8fee
+.enum_member_annotations,
6b8fee
+.struct_member_annotations,
6b8fee
+.union_member_annotations
6b8fee
+{
6b8fee
+  color: #888a85;
6b8fee
+}
6b8fee
+
6b8fee
+.function_type a,
6b8fee
+.function_type a:visited,
6b8fee
+.function_type a:hover,
6b8fee
+.property_type a,
6b8fee
+.property_type a:visited,
6b8fee
+.property_type a:hover,
6b8fee
+.signal_type a,
6b8fee
+.signal_type a:visited,
6b8fee
+.signal_type a:hover,
6b8fee
+.signal_flags a,
6b8fee
+.signal_flags a:visited,
6b8fee
+.signal_flags a:hover
6b8fee
+{
6b8fee
+ color: #729fcf;
6b8fee
+}
6b8fee
+
6b8fee
+td p
6b8fee
+{
6b8fee
+  margin: 0.25em;
6b8fee
+}
6b8fee
+
6b8fee
 div.table table
6b8fee
 {
6b8fee
   border-collapse: collapse;
6b8fee
@@ -153,14 +149,44 @@ div.table table th
6b8fee
   background-color: #d3d7cf;
6b8fee
 }
6b8fee
 
6b8fee
+h4
6b8fee
+{
6b8fee
+  color: #555753;
6b8fee
+  margin-top: 1em;
6b8fee
+  margin-bottom: 1em;
6b8fee
+}
6b8fee
+
6b8fee
 hr
6b8fee
 {
6b8fee
-  /* tango:aluminium 3 */
6b8fee
-  color: #babdb6;
6b8fee
-  background: #babdb6;
6b8fee
+  /* tango:aluminium 1 */
6b8fee
+  color: #d3d7cf;
6b8fee
+  background: #d3d7cf;
6b8fee
   border: none 0px;
6b8fee
   height: 1px;
6b8fee
   clear: both;
6b8fee
+  margin: 2.0em 0em 2.0em 0em;
6b8fee
+}
6b8fee
+
6b8fee
+dl.toc dt
6b8fee
+{
6b8fee
+  padding-bottom: 0.25em;
6b8fee
+}
6b8fee
+
6b8fee
+dl.toc > dt
6b8fee
+{
6b8fee
+  padding-top: 0.25em;
6b8fee
+  padding-bottom: 0.25em;
6b8fee
+  font-weight: bold;
6b8fee
+}
6b8fee
+
6b8fee
+dl.toc > dl
6b8fee
+{
6b8fee
+  padding-bottom: 0.5em;
6b8fee
+}
6b8fee
+
6b8fee
+.parameter
6b8fee
+{
6b8fee
+  font-style: normal;
6b8fee
 }
6b8fee
 
6b8fee
 .footer
6b8fee
@@ -172,31 +198,70 @@ hr
6b8fee
   font-size: 80%;
6b8fee
 }
6b8fee
 
6b8fee
+.informalfigure,
6b8fee
+.figure
6b8fee
+{
6b8fee
+  margin: 1em;
6b8fee
+}
6b8fee
+
6b8fee
+.informalexample,
6b8fee
+.example
6b8fee
+{
6b8fee
+  margin-top: 1em;
6b8fee
+  margin-bottom: 1em;
6b8fee
+}
6b8fee
+
6b8fee
 .warning
6b8fee
 {
6b8fee
   /* tango:orange 0/1 */
6b8fee
   background: #ffeed9;
6b8fee
+  background: rgba(252, 175, 62, 0.1);
6b8fee
   border-color: #ffb04f;
6b8fee
+  border-color: rgba(252, 175, 62, 0.2);
6b8fee
 }
6b8fee
 .note
6b8fee
 {
6b8fee
   /* tango:chameleon 0/0.5 */
6b8fee
   background: #d8ffb2;
6b8fee
+  background: rgba(138, 226, 52, 0.1);
6b8fee
   border-color: #abf562;
6b8fee
+  border-color: rgba(138, 226, 52, 0.2);
6b8fee
 }
6b8fee
-.note, .warning
6b8fee
+div.blockquote
6b8fee
+{
6b8fee
+  border-color: #eeeeec;
6b8fee
+}
6b8fee
+.note, .warning, div.blockquote
6b8fee
 {
6b8fee
   padding: 0.5em;
6b8fee
   border-width: 1px;
6b8fee
   border-style: solid;
6b8fee
+  margin: 2em;
6b8fee
 }
6b8fee
-.note h3, .warning h3
6b8fee
+.note p, .warning p
6b8fee
 {
6b8fee
-  margin-top: 0.0em
6b8fee
+  margin: 0;
6b8fee
 }
6b8fee
-.note p, .warning p
6b8fee
+
6b8fee
+div.warning h3.title,
6b8fee
+div.note h3.title
6b8fee
+{
6b8fee
+  display: none;
6b8fee
+}
6b8fee
+
6b8fee
+p + div.section
6b8fee
+{
6b8fee
+  margin-top: 1em;
6b8fee
+}
6b8fee
+
6b8fee
+div.refnamediv,
6b8fee
+div.refsynopsisdiv,
6b8fee
+div.refsect1,
6b8fee
+div.refsect2,
6b8fee
+div.toc,
6b8fee
+div.section
6b8fee
 {
6b8fee
-  margin-bottom: 0.0em
6b8fee
+  margin-bottom: 1em;
6b8fee
 }
6b8fee
 
6b8fee
 /* blob links */
6b8fee
@@ -209,33 +274,52 @@ h2 .extralinks, h3 .extralinks
6b8fee
   font-weight: normal;
6b8fee
 }
6b8fee
 
6b8fee
+.lineart
6b8fee
+{
6b8fee
+  color: #d3d7cf;
6b8fee
+  font-weight: normal;
6b8fee
+}
6b8fee
+
6b8fee
 .annotation
6b8fee
 {
6b8fee
   /* tango:aluminium 5 */
6b8fee
   color: #555753;
6b8fee
-  font-size: 80%;
6b8fee
   font-weight: normal;
6b8fee
 }
6b8fee
 
6b8fee
+.structfield
6b8fee
+{
6b8fee
+  font-style: normal;
6b8fee
+  font-weight: normal;
6b8fee
+}
6b8fee
+
6b8fee
+acronym,abbr
6b8fee
+{
6b8fee
+  border-bottom: 1px dotted gray;
6b8fee
+}
6b8fee
+
6b8fee
 /* code listings */
6b8fee
 
6b8fee
-.listing_code .programlisting .cbracket   { color: #a40000; } /* tango: scarlet red 3 */
6b8fee
-.listing_code .programlisting .comment    { color: #a1a39d; } /* tango: aluminium 4 */
6b8fee
-.listing_code .programlisting .function   { color: #000000; font-weight: bold; }
6b8fee
-.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
6b8fee
-.listing_code .programlisting .keyword    { color: #4e9a06; } /* tango: chameleon 3  */
6b8fee
+.listing_code .programlisting .normal,
6b8fee
+.listing_code .programlisting .normal a,
6b8fee
+.listing_code .programlisting .number,
6b8fee
+.listing_code .programlisting .cbracket,
6b8fee
+.listing_code .programlisting .symbol     { color: #555753; }
6b8fee
+.listing_code .programlisting .comment,
6b8fee
 .listing_code .programlisting .linenum    { color: #babdb6; } /* tango: aluminium 3 */
6b8fee
-.listing_code .programlisting .normal     { color: #000000; }
6b8fee
-.listing_code .programlisting .number     { color: #75507b; } /* tango: plum 2 */
6b8fee
+.listing_code .programlisting .function,
6b8fee
+.listing_code .programlisting .function a,
6b8fee
 .listing_code .programlisting .preproc    { color: #204a87; } /* tango: sky blue 3  */
6b8fee
-.listing_code .programlisting .string     { color: #c17d11; } /* tango: chocolate 2 */
6b8fee
-.listing_code .programlisting .type       { color: #000000; }
6b8fee
-.listing_code .programlisting .type a     { color: #11326b; } /* tango: sky blue 4 */
6b8fee
-.listing_code .programlisting .symbol     { color: #ce5c00; } /* tango: orange 3 */
6b8fee
+.listing_code .programlisting .string     { color: #ad7fa8; } /* tango: plum */
6b8fee
+.listing_code .programlisting .keyword,
6b8fee
+.listing_code .programlisting .usertype,
6b8fee
+.listing_code .programlisting .type,
6b8fee
+.listing_code .programlisting .type a     { color: #4e9a06; } /* tango: chameleon 3  */
6b8fee
 
6b8fee
 .listing_frame {
6b8fee
   /* tango:sky blue 1 */
6b8fee
   border: solid 1px #729fcf;
6b8fee
+  border: solid 1px rgba(114, 159, 207, 0.2);
6b8fee
   padding: 0px;
6b8fee
 }
6b8fee
 
6b8fee
@@ -247,18 +331,152 @@ h2 .extralinks, h3 .extralinks
6b8fee
 .listing_lines {
6b8fee
   /* tango:sky blue 0.5 */
6b8fee
   background: #a6c5e3;
6b8fee
+  background: rgba(114, 159, 207, 0.2);
6b8fee
   /* tango:aluminium 6 */
6b8fee
   color: #2e3436;
6b8fee
 }
6b8fee
 .listing_code {
6b8fee
   /* tango:sky blue 0 */
6b8fee
   background: #e6f3ff;
6b8fee
+  background: rgba(114, 159, 207, 0.1);
6b8fee
 }
6b8fee
 .listing_code .programlisting {
6b8fee
   /* override from previous */
6b8fee
   border: none 0px;
6b8fee
   padding: 0px;
6b8fee
+  background: none;
6b8fee
 }
6b8fee
 .listing_lines pre, .listing_code pre {
6b8fee
   margin: 0px;
6b8fee
 }
6b8fee
+
6b8fee
+@media screen {
6b8fee
+  /* these have a <sup> as a first child, but since there are no parent selectors
6b8fee
+   * we can't use that. */
6b8fee
+  a.footnote
6b8fee
+  {
6b8fee
+    position: relative;
6b8fee
+    top: 0em ! important;
6b8fee
+  }
6b8fee
+  /* this is needed so that the local anchors are displayed below the naviagtion */
6b8fee
+  div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
6b8fee
+  {
6b8fee
+    display: inline-block;
6b8fee
+    position: relative;
6b8fee
+    top:-5em;
6b8fee
+  }
6b8fee
+  /* this seems to be a bug in the xsl style sheets when generating indexes */
6b8fee
+  div.index div.index
6b8fee
+  {
6b8fee
+    top: 0em;
6b8fee
+  }
6b8fee
+  /* make space for the fixed navigation bar and add space at the bottom so that
6b8fee
+   * link targets appear somewhat close to top
6b8fee
+   */
6b8fee
+  body
6b8fee
+  {
6b8fee
+    padding-top: 2.5em;
6b8fee
+    padding-bottom: 500px;
6b8fee
+    max-width: 60em;
6b8fee
+  }
6b8fee
+  p
6b8fee
+  {
6b8fee
+    max-width: 60em;
6b8fee
+  }
6b8fee
+  /* style and size the navigation bar */
6b8fee
+  table.navigation#top
6b8fee
+  {
6b8fee
+    position: fixed;
6b8fee
+    background: #e2e2e2;
6b8fee
+    border-bottom: solid 1px #babdb6;
6b8fee
+    border-spacing: 5px;
6b8fee
+    margin-top: 0;
6b8fee
+    margin-bottom: 0;
6b8fee
+    top: 0;
6b8fee
+    left: 0;
6b8fee
+    z-index: 10;
6b8fee
+  }
6b8fee
+  table.navigation#top td
6b8fee
+  {
6b8fee
+    padding-left: 6px;
6b8fee
+    padding-right: 6px;
6b8fee
+  }
6b8fee
+  .navigation a, .navigation a:visited
6b8fee
+  {
6b8fee
+    /* tango:sky blue 3 */
6b8fee
+    color: #204a87;
6b8fee
+  }
6b8fee
+  .navigation a:hover
6b8fee
+  {
6b8fee
+    /* tango:sky blue 2 */
6b8fee
+    color: #3465a4;
6b8fee
+  }
6b8fee
+  td.shortcuts
6b8fee
+  {
6b8fee
+    /* tango:sky blue 2 */
6b8fee
+    color: #3465a4;
6b8fee
+    font-size: 80%;
6b8fee
+    white-space: nowrap;
6b8fee
+  }
6b8fee
+  td.shortcuts .dim
6b8fee
+  {
6b8fee
+    color: #babdb6;
6b8fee
+  }
6b8fee
+  .navigation .title
6b8fee
+  {
6b8fee
+    font-size: 80%;
6b8fee
+    max-width: none;
6b8fee
+    margin: 0px;
6b8fee
+    font-weight: normal;
6b8fee
+  }
6b8fee
+}
6b8fee
+@media screen and (min-width: 60em) {
6b8fee
+  /* screen larger than 60em */
6b8fee
+  body { margin: auto; }
6b8fee
+}
6b8fee
+@media screen and (max-width: 60em) {
6b8fee
+  /* screen less than 60em */
6b8fee
+  #nav_hierarchy { display: none; }
6b8fee
+  #nav_interfaces { display: none; }
6b8fee
+  #nav_prerequisites { display: none; }
6b8fee
+  #nav_derived_interfaces { display: none; }
6b8fee
+  #nav_implementations { display: none; }
6b8fee
+  #nav_child_properties { display: none; }
6b8fee
+  #nav_style_properties { display: none; }
6b8fee
+  #nav_index { display: none; }
6b8fee
+  #nav_glossary { display: none; }
6b8fee
+  .gallery_image { display: none; }
6b8fee
+  .property_flags { display: none; }
6b8fee
+  .signal_flags { display: none; }
6b8fee
+  .parameter_annotations { display: none; }
6b8fee
+  .enum_member_annotations { display: none; }
6b8fee
+  .struct_member_annotations { display: none; }
6b8fee
+  .union_member_annotations { display: none; }
6b8fee
+  /* now that a column is hidden, optimize space */
6b8fee
+  col.parameters_name { width: auto; }
6b8fee
+  col.parameters_description { width: auto; }
6b8fee
+  col.struct_members_name { width: auto; }
6b8fee
+  col.struct_members_description { width: auto; }
6b8fee
+  col.enum_members_name { width: auto; }
6b8fee
+  col.enum_members_description { width: auto; }
6b8fee
+  col.union_members_name { width: auto; }
6b8fee
+  col.union_members_description { width: auto; }
6b8fee
+  .listing_lines { display: none; }
6b8fee
+}
6b8fee
+@media print {
6b8fee
+  table.navigation {
6b8fee
+    visibility: collapse;
6b8fee
+    display: none;
6b8fee
+  }
6b8fee
+  div.titlepage table.navigation {
6b8fee
+    visibility: visible;
6b8fee
+    display: table;
6b8fee
+    background: #e2e2e2;
6b8fee
+    border: solid 1px #babdb6;
6b8fee
+    margin-top: 0;
6b8fee
+    margin-bottom: 0;
6b8fee
+    top: 0;
6b8fee
+    left: 0;
6b8fee
+    height: 3em;
6b8fee
+  }
6b8fee
+}
6b8fee
-- 
6b8fee
2.21.0
6b8fee