Commits

braindamaged committed 0f3964e

doc: doxygen

Conflicts:
src/libudev-device.c

Comments (0)

Files changed (33)

 /configure
 /stamp-h1
 /depcomp
-/gtk-doc.make
 /build-aux
 /udev-test-install
 /udevd
 	--enable-floppy \
 	--with-selinux
 
-if ENABLE_GTK_DOC
-DISTCHECK_CONFIGURE_FLAGS += --enable-gtk-doc
-endif
-
 BUILT_SOURCES =
 EXTRA_DIST =
 CLEANFILES =
 dist_udevhome_SCRIPTS =
 dist_udevhome_DATA =
 dist_man_MANS =
+dist_doc_DATA =
 
 SED_PROCESS = \
 	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(SED) \
 	$(AM_V_GEN)chmod +x $@
 
 # ------------------------------------------------------------------------------
-if ENABLE_GTK_DOC
-SUBDIRS += src/docs
-endif
-
 include_HEADERS = src/libudev.h
 lib_LTLIBRARIES = libudev.la
 noinst_LTLIBRARIES = libudev-private.la
 udevadm_CPPFLAGS = $(udev_common_CPPFLAGS)
 
 # ------------------------------------------------------------------------------
+if DX_COND_doc
+SUBDIRS += docs
+endif
+
 if ENABLE_MANPAGES
 dist_man_MANS += \
 	src/udev.7 \
 # ------------------------------------------------------------------------------
 if ENABLE_GUDEV
 
-if ENABLE_GTK_DOC
-SUBDIRS += src/gudev/docs
-endif
-
 libgudev_includedir=$(includedir)/gudev-1.0/gudev
 libgudev_include_HEADERS = \
 	src/gudev/gudev.h \
 BUILT_SOURCES += $(nodist_keymap_SOURCES)
 
 pkglibexec_PROGRAMS += keymap
-dist_doc_DATA = src/keymap/README.keymap.txt
+dist_doc_DATA += src/keymap/README.keymap.txt
 
 dist_udevrules_DATA += \
 	src/keymap/95-keymap.rules \
 
  - scsi_id -> sg3_utils?
 
- - make gtk-doc optional like kmod
-
  - move /usr/lib/udev/devices/ to tmpfiles
 
  - trigger --subsystem-match=usb/usb_device
         echo "Activated pre-commit hook."
 fi
 
-if which gtkdocize >/dev/null 2>/dev/null; then
-    gtkdocize --copy
-else
-    echo "You don't have gtk-doc installed, documentation generation disabled."
-    # THE FOLLOWING IS UGLY
-    rm -f gtk-doc.make
-    echo 'EXTRA_DIST =' > gtk-doc.make
-fi
-
 autoreconf --install --symlink
 
 libdir() {
 AC_PROG_SED
 AC_PROG_MKDIR_P
 
-m4_ifdef([GTK_DOC_CHECK], [
-GTK_DOC_CHECK([1.10])
-], [AM_CONDITIONAL(ENABLE_GTK_DOC, false)])
-
-$(echo $ENABLE_GTK_DOC)
-
 AC_PREFIX_DEFAULT([/usr])
 
 AC_PATH_PROG([XSLTPROC], [xsltproc])
 
 AC_CONFIG_HEADERS(config.h)
 AC_CONFIG_FILES([
-       Makefile
-       src/docs/Makefile
-       src/docs/version.xml
-       src/gudev/docs/Makefile
-       src/gudev/docs/version.xml
+        Makefile
+        docs/Makefile
+        docs/Doxyfile
 ])
 
+# ------------------------------------------------------------------------------
+# Documentation
+# ------------------------------------------------------------------------------
+DX_DOXYGEN_FEATURE(OFF)
+DX_DOT_FEATURE(OFF)
+DX_HTML_FEATURE(OFF)
+DX_CHM_FEATURE(OFF)
+DX_CHI_FEATURE(OFF)
+DX_MAN_FEATURE(OFF)
+DX_RTF_FEATURE(OFF)
+DX_XML_FEATURE(OFF)
+DX_PDF_FEATURE(OFF)
+DX_PS_FEATURE(OFF)
+
+DX_INIT_DOXYGEN([udev], [], [API])
+
+case $DX_FLAG_doc in
+    1) AC_SUBST(enable_doxygen, yes) ;;
+    0) AC_SUBST(enable_doxygen,  no) ;;
+esac
+
+# ------------------------------------------------------------------------------
+# Report
+# ------------------------------------------------------------------------------
 AC_OUTPUT
 AC_MSG_RESULT([
         $PACKAGE $VERSION
         debug:                   ${enable_debug}
         selinux:                 ${with_selinux}
 
-        man pages:               ${enable_manpages}
-        gtk-doc:                 ${enable_gtk_doc}
         gudev:                   ${enable_gudev}
         gintrospection:          ${enable_introspection}
         keymap:                  ${enable_keymap}
         mtd_probe:               ${enable_mtd_probe}
         rule_generator:          ${enable_rule_generator}
         floppy:                  ${enable_floppy}
+
+        documentation:           ${enable_doxygen}
+        man pages:               ${enable_manpages}
 ])
+# Configuration file for doxygen
+
+DOXYFILE_ENCODING       = UTF-8
+
+PROJECT_NAME            = "$(PROJECT)"
+PROJECT_BRIEF           = "API reference"
+PROJECT_NUMBER          = "ver. $(VERSION)"
+
+OUTPUT_LANGUAGE         = English
+OUTPUT_DIRECTORY        = API
+
+GENERATE_LEGEND         = YES
+
+SHORT_NAMES             = NO
+FULL_PATH_NAMES         = NO
+CASE_SENSE_NAMES        = NO
+TAB_SIZE                = 4
+INPUT_ENCODING          = UTF-8
+
+INPUT                   = mainpage.doxygen @top_srcdir@/src
+RECURSIVE	            = YES
+FILE_PATTERNS           = libudev*.c gudev*.c
+EXCLUDE_PATTERNS        = *private.c
+
+EXTRACT_ALL	            = NO
+EXTRACT_STATIC	        = NO
+
+SHOW_INCLUDE_FILES      = NO
+JAVADOC_AUTOBRIEF       = NO
+INHERIT_DOCS	        = YES
+
+MACRO_EXPANSION         = NO
+EXPAND_ONLY_PREDEF      = NO
+
+SORT_GROUP_NAMES        = YES
+
+OPTIMIZE_OUTPUT_FOR_C   = YES
+# ------------------------------------------------------------------------------
+# Rules for every output format
+# ------------------------------------------------------------------------------
+
+DX_FILES =
+
+# --- HTML
+
+if DX_COND_html
+DX_FILES += html
+endif
+
+# --- CHM (and CHI)
+
+if DX_COND_chm
+DX_FILES += chm
+if DX_COND_chi
+DX_FILES += @PACKAGE@.chi
+endif
+endif
+
+# --- MAN
+
+if DX_COND_man
+DX_FILES += man
+endif
+
+# --- RTF
+
+if DX_COND_rtf
+DX_FILES += rtf
+endif
+
+# --- XML
+
+if DX_COND_xml
+DX_FILES += xml
+endif
+
+# --- PS
+
+if DX_COND_ps
+DX_FILES += @PACKAGE@.ps
+
+DX_PS_GOAL = doxygen-ps
+
+doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+
+@DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_LATEX) refman.tex; \
+	$(MAKEINDEX_PATH) refman.idx; \
+	$(DX_LATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+	                  refman.log > /dev/null 2>&1 \
+	   && test $$countdown -gt 0; do \
+	    $(DX_LATEX) refman.tex; \
+	    countdown=`expr $$countdown - 1`; \
+	done; \
+	$(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+endif
+
+# --- PDF
+
+if DX_COND_pdf
+DX_FILES += @PACKAGE@.pdf
+
+DX_PDF_GOAL = doxygen-pdf
+
+doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+
+@DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+	cd @DX_DOCDIR@/latex; \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(DX_PDFLATEX) refman.tex; \
+	$(DX_MAKEINDEX) refman.idx; \
+	$(DX_PDFLATEX) refman.tex; \
+	countdown=5; \
+	while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+	                  refman.log > /dev/null 2>&1 \
+	   && test $$countdown -gt 0; do \
+	    $(DX_PDFLATEX) refman.tex; \
+	    countdown=`expr $$countdown - 1`; \
+	done; \
+	mv refman.pdf ../@PACKAGE@.pdf
+endif
+
+# ------------------------------------------------------------------------------
+# Targets
+# ------------------------------------------------------------------------------
+
+DX_CLEAN = -r \
+	@DX_DOCDIR@/html \
+	@DX_DOCDIR@/chm \
+	@DX_DOCDIR@/@PACKAGE@.chi \
+	@DX_DOCDIR@/man \
+	@DX_DOCDIR@/rtf \
+	@DX_DOCDIR@/xml \
+	@DX_DOCDIR@/@PACKAGE@.ps \
+	@DX_DOCDIR@/@PACKAGE@.pdf \
+	@DX_DOCDIR@/latex
+
+MOSTLYCLEANFILES = $(DX_CLEAN)
+
+@DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+	rm -rf $(DX_CLEAN)
+	$(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+
+doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+
+all-local: doxygen-doc
+
+install-data-local:
+	mkdir -p $(DESTDIR)$(docdir)/API
+	cd $(DX_DOCDIR) && cp -r $(DX_FILES) $(DESTDIR)$(docdir)/API
+
+uninstall-local:
+	rm -rf $(DESTDIR)$(docdir)/API
+
+.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)

docs/mainpage.doxygen

+/** @mainpage General information
+
+This is the <a href="modules.html">API reference</a> for libraries (libudev and libgudev) that are shipped with udev.
+
+**/
 libtool.m4
 lt*m4
-gtk-doc.m4
 

m4/ax_prog_doxygen.m4

+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   DX_INIT_DOXYGEN(PROJECT-NAME, DOXYFILE-PATH, [OUTPUT-DIR])
+#   DX_DOXYGEN_FEATURE(ON|OFF)
+#   DX_DOT_FEATURE(ON|OFF)
+#   DX_HTML_FEATURE(ON|OFF)
+#   DX_CHM_FEATURE(ON|OFF)
+#   DX_CHI_FEATURE(ON|OFF)
+#   DX_MAN_FEATURE(ON|OFF)
+#   DX_RTF_FEATURE(ON|OFF)
+#   DX_XML_FEATURE(ON|OFF)
+#   DX_PDF_FEATURE(ON|OFF)
+#   DX_PS_FEATURE(ON|OFF)
+#
+# DESCRIPTION
+#
+#   The DX_*_FEATURE macros control the default setting for the given
+#   Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for
+#   generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML
+#   help (for MS users), 'CHI' for generating a seperate .chi file by the
+#   .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate
+#   output formats. The environment variable DOXYGEN_PAPER_SIZE may be
+#   specified to override the default 'a4wide' paper size.
+#
+#   By default, HTML, PDF and PS documentation is generated as this seems to
+#   be the most popular and portable combination. MAN pages created by
+#   Doxygen are usually problematic, though by picking an appropriate subset
+#   and doing some massaging they might be better than nothing. CHM and RTF
+#   are specific for MS (note that you can't generate both HTML and CHM at
+#   the same time). The XML is rather useless unless you apply specialized
+#   post-processing to it.
+#
+#   The macros mainly control the default state of the feature. The use can
+#   override the default by specifying --enable or --disable. The macros
+#   ensure that contradictory flags are not given (e.g.,
+#   --enable-doxygen-html and --enable-doxygen-chm,
+#   --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each
+#   feature will be automatically disabled (with a warning) if the required
+#   programs are missing.
+#
+#   Once all the feature defaults have been specified, call DX_INIT_DOXYGEN
+#   with the following parameters: a one-word name for the project for use
+#   as a filename base etc., an optional configuration file name (the
+#   default is 'Doxyfile', the same as Doxygen's default), and an optional
+#   output directory name (the default is 'doxygen-doc').
+#
+#   Automake Support
+#
+#   The following is a template aminclude.am file for use with Automake.
+#   Make targets and variables values are controlled by the various
+#   DX_COND_* conditionals set by autoconf.
+#
+#   The provided targets are:
+#
+#     doxygen-doc: Generate all doxygen documentation.
+#
+#     doxygen-run: Run doxygen, which will generate some of the
+#                  documentation (HTML, CHM, CHI, MAN, RTF, XML)
+#                  but will not do the post processing required
+#                  for the rest of it (PS, PDF, and some MAN).
+#
+#     doxygen-man: Rename some doxygen generated man pages.
+#
+#     doxygen-ps:  Generate doxygen PostScript documentation.
+#
+#     doxygen-pdf: Generate doxygen PDF documentation.
+#
+#   Note that by default these are not integrated into the automake targets.
+#   If doxygen is used to generate man pages, you can achieve this
+#   integration by setting man3_MANS to the list of man pages generated and
+#   then adding the dependency:
+#
+#     $(man3_MANS): doxygen-doc
+#
+#   This will cause make to run doxygen and generate all the documentation.
+#
+#   The following variable is intended for use in Makefile.am:
+#
+#     DX_CLEANFILES = everything to clean.
+#
+#   Then add this variable to MOSTLYCLEANFILES.
+#
+#     ----- begin aminclude.am -------------------------------------
+#
+#     ## --------------------------------- ##
+#     ## Format-independent Doxygen rules. ##
+#     ## --------------------------------- ##
+#
+#     if DX_COND_doc
+#
+#     ## ------------------------------- ##
+#     ## Rules specific for HTML output. ##
+#     ## ------------------------------- ##
+#
+#     if DX_COND_html
+#
+#     DX_CLEAN_HTML = @DX_DOCDIR@/html
+#
+#     endif DX_COND_html
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for CHM output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_chm
+#
+#     DX_CLEAN_CHM = @DX_DOCDIR@/chm
+#
+#     if DX_COND_chi
+#
+#     DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi
+#
+#     endif DX_COND_chi
+#
+#     endif DX_COND_chm
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for MAN output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_man
+#
+#     DX_CLEAN_MAN = @DX_DOCDIR@/man
+#
+#     endif DX_COND_man
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for RTF output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_rtf
+#
+#     DX_CLEAN_RTF = @DX_DOCDIR@/rtf
+#
+#     endif DX_COND_rtf
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for XML output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_xml
+#
+#     DX_CLEAN_XML = @DX_DOCDIR@/xml
+#
+#     endif DX_COND_xml
+#
+#     ## ----------------------------- ##
+#     ## Rules specific for PS output. ##
+#     ## ----------------------------- ##
+#
+#     if DX_COND_ps
+#
+#     DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps
+#
+#     DX_PS_GOAL = doxygen-ps
+#
+#     doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps
+#
+#     @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag
+#         cd @DX_DOCDIR@/latex; \
+#         rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+#         $(DX_LATEX) refman.tex; \
+#         $(MAKEINDEX_PATH) refman.idx; \
+#         $(DX_LATEX) refman.tex; \
+#         countdown=5; \
+#         while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+#                           refman.log > /dev/null 2>&1 \
+#            && test $$countdown -gt 0; do \
+#             $(DX_LATEX) refman.tex; \
+#             countdown=`expr $$countdown - 1`; \
+#         done; \
+#         $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi
+#
+#     endif DX_COND_ps
+#
+#     ## ------------------------------ ##
+#     ## Rules specific for PDF output. ##
+#     ## ------------------------------ ##
+#
+#     if DX_COND_pdf
+#
+#     DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf
+#
+#     DX_PDF_GOAL = doxygen-pdf
+#
+#     doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf
+#
+#     @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag
+#         cd @DX_DOCDIR@/latex; \
+#         rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+#         $(DX_PDFLATEX) refman.tex; \
+#         $(DX_MAKEINDEX) refman.idx; \
+#         $(DX_PDFLATEX) refman.tex; \
+#         countdown=5; \
+#         while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \
+#                           refman.log > /dev/null 2>&1 \
+#            && test $$countdown -gt 0; do \
+#             $(DX_PDFLATEX) refman.tex; \
+#             countdown=`expr $$countdown - 1`; \
+#         done; \
+#         mv refman.pdf ../@PACKAGE@.pdf
+#
+#     endif DX_COND_pdf
+#
+#     ## ------------------------------------------------- ##
+#     ## Rules specific for LaTeX (shared for PS and PDF). ##
+#     ## ------------------------------------------------- ##
+#
+#     if DX_COND_latex
+#
+#     DX_CLEAN_LATEX = @DX_DOCDIR@/latex
+#
+#     endif DX_COND_latex
+#
+#     .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL)
+#
+#     .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+#
+#     doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag
+#
+#     doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL)
+#
+#     @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS)
+#         rm -rf @DX_DOCDIR@
+#         $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG)
+#
+#     DX_CLEANFILES = \
+#         @DX_DOCDIR@/@PACKAGE@.tag \
+#         -r \
+#         $(DX_CLEAN_HTML) \
+#         $(DX_CLEAN_CHM) \
+#         $(DX_CLEAN_CHI) \
+#         $(DX_CLEAN_MAN) \
+#         $(DX_CLEAN_RTF) \
+#         $(DX_CLEAN_XML) \
+#         $(DX_CLEAN_PS) \
+#         $(DX_CLEAN_PDF) \
+#         $(DX_CLEAN_LATEX)
+#
+#     endif DX_COND_doc
+#
+#     ----- end aminclude.am ---------------------------------------
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Oren Ben-Kiki <oren@ben-kiki.org>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 12
+
+## ----------##
+## Defaults. ##
+## ----------##
+
+DX_ENV=""
+AC_DEFUN([DX_FEATURE_doc],  ON)
+AC_DEFUN([DX_FEATURE_dot],  OFF)
+AC_DEFUN([DX_FEATURE_man],  OFF)
+AC_DEFUN([DX_FEATURE_html], ON)
+AC_DEFUN([DX_FEATURE_chm],  OFF)
+AC_DEFUN([DX_FEATURE_chi],  OFF)
+AC_DEFUN([DX_FEATURE_rtf],  OFF)
+AC_DEFUN([DX_FEATURE_xml],  OFF)
+AC_DEFUN([DX_FEATURE_pdf],  ON)
+AC_DEFUN([DX_FEATURE_ps],   ON)
+
+## --------------- ##
+## Private macros. ##
+## --------------- ##
+
+# DX_ENV_APPEND(VARIABLE, VALUE)
+# ------------------------------
+# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
+AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
+
+# DX_DIRNAME_EXPR
+# ---------------
+# Expand into a shell expression prints the directory part of a path.
+AC_DEFUN([DX_DIRNAME_EXPR],
+         [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
+
+# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
+# -------------------------------------
+# Expands according to the M4 (static) status of the feature.
+AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
+
+# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
+# ----------------------------------
+# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
+AC_DEFUN([DX_REQUIRE_PROG], [
+AC_PATH_TOOL([$1], [$2])
+if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
+    AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
+    AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0)
+fi
+])
+
+# DX_TEST_FEATURE(FEATURE)
+# ------------------------
+# Expand to a shell expression testing whether the feature is active.
+AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
+
+# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
+# -------------------------------------------------
+# Verify that a required features has the right state before trying to turn on
+# the DX_CURRENT_FEATURE.
+AC_DEFUN([DX_CHECK_DEPEND], [
+test "$DX_FLAG_$1" = "$2" \
+|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
+                            requires, contradicts) doxygen-DX_CURRENT_FEATURE])
+])
+
+# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
+# ----------------------------------------------------------
+# Turn off the DX_CURRENT_FEATURE if the required feature is off.
+AC_DEFUN([DX_CLEAR_DEPEND], [
+test "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0)
+])
+
+# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
+#                CHECK_DEPEND, CLEAR_DEPEND,
+#                REQUIRE, DO-IF-ON, DO-IF-OFF)
+# --------------------------------------------
+# Parse the command-line option controlling a feature. CHECK_DEPEND is called
+# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
+# otherwise CLEAR_DEPEND is called to turn off the default state if a required
+# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
+# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
+# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
+AC_DEFUN([DX_ARG_ABLE], [
+    AC_DEFUN([DX_CURRENT_FEATURE], [$1])
+    AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
+    AC_ARG_ENABLE($1,
+                  [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-$1],
+                                                      [--enable-$1]),
+                                  DX_IF_FEATURE([$1], [don't $2], [$2]))],
+                  [
+case "$enableval" in
+#(
+y|Y|yes|Yes|YES)
+    AC_SUBST([DX_FLAG_$1], 1)
+    $3
+;; #(
+n|N|no|No|NO)
+    AC_SUBST([DX_FLAG_$1], 0)
+;; #(
+*)
+    AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
+;;
+esac
+], [
+AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
+$4
+])
+if DX_TEST_FEATURE([$1]); then
+    $5
+    :
+fi
+AM_CONDITIONAL(DX_COND_$1, DX_TEST_FEATURE([$1]))
+if DX_TEST_FEATURE([$1]); then
+    $6
+    :
+else
+    $7
+    :
+fi
+])
+
+## -------------- ##
+## Public macros. ##
+## -------------- ##
+
+# DX_XXX_FEATURE(DEFAULT_STATE)
+# -----------------------------
+AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc],  [$1])])
+AC_DEFUN([DX_DOT_FEATURE],     [AC_DEFUN([DX_FEATURE_dot], [$1])])
+AC_DEFUN([DX_MAN_FEATURE],     [AC_DEFUN([DX_FEATURE_man],  [$1])])
+AC_DEFUN([DX_HTML_FEATURE],    [AC_DEFUN([DX_FEATURE_html], [$1])])
+AC_DEFUN([DX_CHM_FEATURE],     [AC_DEFUN([DX_FEATURE_chm],  [$1])])
+AC_DEFUN([DX_CHI_FEATURE],     [AC_DEFUN([DX_FEATURE_chi],  [$1])])
+AC_DEFUN([DX_RTF_FEATURE],     [AC_DEFUN([DX_FEATURE_rtf],  [$1])])
+AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
+AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
+AC_DEFUN([DX_PDF_FEATURE],     [AC_DEFUN([DX_FEATURE_pdf],  [$1])])
+AC_DEFUN([DX_PS_FEATURE],      [AC_DEFUN([DX_FEATURE_ps],   [$1])])
+
+# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
+# ---------------------------------------------------------
+# PROJECT also serves as the base name for the documentation files.
+# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
+AC_DEFUN([DX_INIT_DOXYGEN], [
+
+# Files:
+AC_SUBST([DX_PROJECT], [$1])
+AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
+AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
+
+# Environment variables used inside doxygen.cfg:
+DX_ENV_APPEND(SRCDIR, $srcdir)
+DX_ENV_APPEND(PROJECT, $DX_PROJECT)
+DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
+DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
+
+# Doxygen itself:
+DX_ARG_ABLE(doc, [generate doxygen documentation],
+            [],
+            [],
+            [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
+             DX_REQUIRE_PROG([DX_PERL], perl)],
+            [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
+
+# Dot for graphics:
+DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_DOT], dot)],
+            [DX_ENV_APPEND(HAVE_DOT, YES)
+             DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
+            [DX_ENV_APPEND(HAVE_DOT, NO)])
+
+# Man pages generation:
+DX_ARG_ABLE(man, [generate doxygen manual pages],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_MAN, YES)],
+            [DX_ENV_APPEND(GENERATE_MAN, NO)])
+
+# RTF file generation:
+DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_RTF, YES)],
+            [DX_ENV_APPEND(GENERATE_RTF, NO)])
+
+# XML file generation:
+DX_ARG_ABLE(xml, [generate doxygen XML documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_XML, YES)],
+            [DX_ENV_APPEND(GENERATE_XML, NO)])
+
+# (Compressed) HTML help generation:
+DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_HHC], hhc)],
+            [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
+             DX_ENV_APPEND(GENERATE_HTML, YES)
+             DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
+            [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
+
+# Seperate CHI file generation.
+DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
+            [DX_CHECK_DEPEND(chm, 1)],
+            [DX_CLEAR_DEPEND(chm, 1)],
+            [],
+            [DX_ENV_APPEND(GENERATE_CHI, YES)],
+            [DX_ENV_APPEND(GENERATE_CHI, NO)])
+
+# Plain HTML pages generation:
+DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
+            [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
+            [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
+            [],
+            [DX_ENV_APPEND(GENERATE_HTML, YES)],
+            [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
+
+# PostScript file generation:
+DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_LATEX], latex)
+             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
+             DX_REQUIRE_PROG([DX_DVIPS], dvips)
+             DX_REQUIRE_PROG([DX_EGREP], egrep)])
+
+# PDF file generation:
+DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
+            [DX_CHECK_DEPEND(doc, 1)],
+            [DX_CLEAR_DEPEND(doc, 1)],
+            [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
+             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
+             DX_REQUIRE_PROG([DX_EGREP], egrep)])
+
+# LaTeX generation for PS and/or PDF:
+AM_CONDITIONAL(DX_COND_latex, DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf))
+if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
+    DX_ENV_APPEND(GENERATE_LATEX, YES)
+else
+    DX_ENV_APPEND(GENERATE_LATEX, NO)
+fi
+
+# Paper size for PS and/or PDF:
+AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
+           [a4wide (default), a4, letter, legal or executive])
+case "$DOXYGEN_PAPER_SIZE" in
+#(
+"")
+    AC_SUBST(DOXYGEN_PAPER_SIZE, "")
+;; #(
+a4wide|a4|letter|legal|executive)
+    DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
+;; #(
+*)
+    AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
+;;
+esac
+
+#For debugging:
+#echo DX_FLAG_doc=$DX_FLAG_doc
+#echo DX_FLAG_dot=$DX_FLAG_dot
+#echo DX_FLAG_man=$DX_FLAG_man
+#echo DX_FLAG_html=$DX_FLAG_html
+#echo DX_FLAG_chm=$DX_FLAG_chm
+#echo DX_FLAG_chi=$DX_FLAG_chi
+#echo DX_FLAG_rtf=$DX_FLAG_rtf
+#echo DX_FLAG_xml=$DX_FLAG_xml
+#echo DX_FLAG_pdf=$DX_FLAG_pdf
+#echo DX_FLAG_ps=$DX_FLAG_ps
+#echo DX_ENV=$DX_ENV
+])

src/docs/.gitignore

-libudev-overrides.txt
-html/
-tmpl/
-xml/
-*.stamp
-*.bak
-version.xml
-libudev-decl-list.txt
-libudev-decl.txt
-libudev-undeclared.txt
-libudev-undocumented.txt
-libudev-unused.txt
-libudev.args
-libudev.hierarchy
-libudev.interfaces
-libudev.prerequisites
-libudev.signals

src/docs/Makefile.am

-## Process this file with automake to produce Makefile.in
-
-# We require automake 1.10 at least.
-AUTOMAKE_OPTIONS = 1.10
-
-# This is a blank Makefile.am for using gtk-doc.
-# Copy this to your project's API docs directory and modify the variables to
-# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
-# of using the various options.
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=libudev
-
-# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
-#DOC_MODULE_VERSION=2
-
-# The top-level SGML file. You can change this if you want to.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
-
-# The directory containing the source code. Relative to $(srcdir).
-# gtk-doc will search all .c & .h files beneath here for inline comments
-# documenting the functions and macros.
-# e.g. DOC_SOURCE_DIR=../../../gtk
-DOC_SOURCE_DIR=$(top_srcdir)/src
-
-# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS=
-
-# Extra options to supply to gtkdoc-scan.
-# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
-SCAN_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkdb.
-# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space udev
-
-# Extra options to supply to gtkdoc-mktmpl
-# e.g. MKTMPL_OPTIONS=--only-section-tmpl
-MKTMPL_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkhtml
-MKHTML_OPTIONS=--path=$(abs_srcdir) --path=$(abs_builddir)
-
-# Extra options to supply to gtkdoc-fixref. Not normally needed.
-# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS=
-
-# Used for dependencies. The docs will be rebuilt if any of these change.
-# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
-# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/src/libudev*.h
-CFILE_GLOB=$(top_srcdir)/src/libudev*.c
-
-# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
-# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES=
-
-# Header files to ignore when scanning. Use base file name, no paths
-# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
-IGNORE_HFILES= libudev-private.h
-
-# Images to copy into HTML directory.
-# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
-HTML_IMAGES=
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files = version.xml
-
-# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
-# These files must be listed here *and* in content_files
-# e.g. expand_content_files=running.sgml
-expand_content_files=
-
-# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
-# Only needed if you are using gtkdoc-scangobj to dynamically query widget
-# signals and properties.
-# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
-# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-GTKDOC_CFLAGS=
-GTKDOC_LIBS=
-
-# This includes the standard gtk-doc make rules, copied by gtkdocize.
-include $(top_srcdir)/gtk-doc.make
-
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
-EXTRA_DIST += version.xml.in
-
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want your docs-status tested during 'make check'
-if ENABLE_GTK_DOC
-#TESTS_ENVIRONMENT = cd $(srcsrc)
-#TESTS = $(GTKDOC_CHECK)
-endif

src/docs/libudev-docs.xml

-<?xml version="1.0"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
-  <!ENTITY version SYSTEM "version.xml">
-]>
-<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
-  <bookinfo>
-    <title>libudev Reference Manual</title>
-    <releaseinfo>for libudev version &version;</releaseinfo>
-    <copyright>
-      <year>2009-2011</year>
-      <holder>Kay Sievers &lt;kay.sievers@vrfy.org&gt;</holder>
-    </copyright>
-  </bookinfo>
-
-  <chapter>
-    <title>libudev</title>
-    <xi:include href="xml/libudev.xml"/>
-    <xi:include href="xml/libudev-list.xml"/>
-    <xi:include href="xml/libudev-device.xml"/>
-    <xi:include href="xml/libudev-monitor.xml"/>
-    <xi:include href="xml/libudev-enumerate.xml"/>
-    <xi:include href="xml/libudev-queue.xml"/>
-    <xi:include href="xml/libudev-util.xml"/>
-  </chapter>
-
-  <index id="api-index-full">
-    <title>API Index</title>
-    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
-  </index>
-</book>

src/docs/libudev-sections.txt

-<SECTION>
-<FILE>libudev</FILE>
-<TITLE>udev</TITLE>
-udev
-udev_ref
-udev_unref
-udev_new
-udev_set_log_fn
-udev_get_log_priority
-udev_set_log_priority
-udev_get_sys_path
-udev_get_dev_path
-udev_get_run_path
-udev_get_userdata
-udev_set_userdata
-</SECTION>
-
-<SECTION>
-<FILE>libudev-list</FILE>
-<TITLE>udev_list</TITLE>
-udev_list_entry
-udev_list_entry_get_next
-udev_list_entry_get_by_name
-udev_list_entry_get_name
-udev_list_entry_get_value
-udev_list_entry_foreach
-</SECTION>
-
-<SECTION>
-<FILE>libudev-device</FILE>
-<TITLE>udev_device</TITLE>
-udev_device
-udev_device_ref
-udev_device_unref
-udev_device_get_udev
-udev_device_new_from_syspath
-udev_device_new_from_devnum
-udev_device_new_from_subsystem_sysname
-udev_device_new_from_environment
-udev_device_get_parent
-udev_device_get_parent_with_subsystem_devtype
-udev_device_get_devpath
-udev_device_get_subsystem
-udev_device_get_devtype
-udev_device_get_syspath
-udev_device_get_sysname
-udev_device_get_sysnum
-udev_device_get_devnode
-udev_device_get_is_initialized
-udev_device_get_devlinks_list_entry
-udev_device_get_properties_list_entry
-udev_device_get_tags_list_entry
-udev_device_get_property_value
-udev_device_get_driver
-udev_device_get_devnum
-udev_device_get_action
-udev_device_get_sysattr_value
-udev_device_get_sysattr_list_entry
-udev_device_get_seqnum
-udev_device_get_usec_since_initialized
-udev_device_has_tag
-</SECTION>
-
-<SECTION>
-<FILE>libudev-monitor</FILE>
-<TITLE>udev_monitor</TITLE>
-udev_monitor
-udev_monitor_ref
-udev_monitor_unref
-udev_monitor_get_udev
-udev_monitor_new_from_netlink
-udev_monitor_new_from_socket
-udev_monitor_enable_receiving
-udev_monitor_set_receive_buffer_size
-udev_monitor_get_fd
-udev_monitor_receive_device
-udev_monitor_filter_add_match_subsystem_devtype
-udev_monitor_filter_add_match_tag
-udev_monitor_filter_update
-udev_monitor_filter_remove
-</SECTION>
-
-<SECTION>
-<FILE>libudev-enumerate</FILE>
-<TITLE>udev_enumerate</TITLE>
-udev_enumerate
-udev_enumerate_ref
-udev_enumerate_unref
-udev_enumerate_get_udev
-udev_enumerate_new
-udev_enumerate_add_match_subsystem
-udev_enumerate_add_nomatch_subsystem
-udev_enumerate_add_match_sysattr
-udev_enumerate_add_nomatch_sysattr
-udev_enumerate_add_match_property
-udev_enumerate_add_match_tag
-udev_enumerate_add_match_parent
-udev_enumerate_add_match_is_initialized
-udev_enumerate_add_match_sysname
-udev_enumerate_add_syspath
-udev_enumerate_scan_devices
-udev_enumerate_scan_subsystems
-udev_enumerate_get_list_entry
-</SECTION>
-
-<SECTION>
-<FILE>libudev-queue</FILE>
-<TITLE>udev_queue</TITLE>
-udev_queue
-udev_queue_ref
-udev_queue_unref
-udev_queue_get_udev
-udev_queue_new
-udev_queue_get_udev_is_active
-udev_queue_get_queue_is_empty
-udev_queue_get_seqnum_is_finished
-udev_queue_get_seqnum_sequence_is_finished
-udev_queue_get_queued_list_entry
-udev_queue_get_kernel_seqnum
-udev_queue_get_udev_seqnum
-</SECTION>
-
-<SECTION>
-<FILE>libudev-util</FILE>
-<TITLE>udev_util</TITLE>
-udev_util_encode_string
-</SECTION>

src/docs/libudev.types

Empty file removed.

src/docs/version.xml.in

-@VERSION@

src/gudev/.gitignore

-gtk-doc.make
-docs/version.xml
 gudev-1.0.pc
 gudevenumtypes.c
 gudevenumtypes.h

src/gudev/docs/.gitignore

-gudev-overrides.txt
-gudev-decl-list.txt
-gudev-decl.txt
-gudev-undeclared.txt
-gudev-undocumented.txt
-gudev-unused.txt
-gudev.args
-gudev.hierarchy
-gudev.interfaces
-gudev.prerequisites
-gudev.signals
-html.stamp
-html/*
-xml/*
-tmpl/*
-*.stamp

src/gudev/docs/Makefile.am

-## Process this file with automake to produce Makefile.in
-
-# We require automake 1.10 at least.
-AUTOMAKE_OPTIONS = 1.10
-
-# This is a blank Makefile.am for using gtk-doc.
-# Copy this to your project's API docs directory and modify the variables to
-# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
-# of using the various options.
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=gudev
-
-# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
-#DOC_MODULE_VERSION=2
-
-# The top-level SGML file. You can change this if you want to.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
-
-# The directory containing the source code. Relative to $(srcdir).
-# gtk-doc will search all .c & .h files beneath here for inline comments
-# documenting the functions and macros.
-# e.g. DOC_SOURCE_DIR=../../../gtk
-DOC_SOURCE_DIR=$(top_srcdir)/src
-
-# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS=
-
-# Extra options to supply to gtkdoc-scan.
-# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
-SCAN_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkdb.
-# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=g_udev
-
-# Extra options to supply to gtkdoc-mktmpl
-# e.g. MKTMPL_OPTIONS=--only-section-tmpl
-MKTMPL_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkhtml
-MKHTML_OPTIONS=--path=$(abs_srcdir) --path=$(abs_builddir)
-
-# Extra options to supply to gtkdoc-fixref. Not normally needed.
-# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS=
-
-# Used for dependencies. The docs will be rebuilt if any of these change.
-# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
-# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/src/gudev/*.h
-CFILE_GLOB=$(top_srcdir)/src/gudev/*.c
-
-# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
-# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES=
-
-# Header files to ignore when scanning. Use base file name, no paths
-# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
-IGNORE_HFILES=
-
-# Images to copy into HTML directory.
-# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
-HTML_IMAGES=
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files = version.xml
-
-# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
-# These files must be listed here *and* in content_files
-# e.g. expand_content_files=running.sgml
-expand_content_files=
-
-# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
-# Only needed if you are using gtkdoc-scangobj to dynamically query widget
-# signals and properties.
-# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
-# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-GTKDOC_CFLAGS = \
-        $(DBUS_GLIB_CFLAGS) \
-        $(GLIB_CFLAGS) \
-        -I$(top_srcdir)/src/gudev \
-        -I$(top_builddir)/src/gudev
-
-GTKDOC_LIBS = \
-        $(GLIB_LIBS) \
-        $(top_builddir)/libgudev-1.0.la
-
-# This includes the standard gtk-doc make rules, copied by gtkdocize.
-include $(top_srcdir)/gtk-doc.make
-
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
-EXTRA_DIST += version.xml.in
-
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want your docs-status tested during 'make check'
-if ENABLE_GTK_DOC
-#TESTS_ENVIRONMENT = cd $(srcsrc)
-#TESTS = $(GTKDOC_CHECK)
-endif

src/gudev/docs/gudev-docs.xml

-<?xml version="1.0"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
-<!ENTITY version SYSTEM "version.xml">
-]>
-<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
-  <bookinfo>
-    <title>GUDev Reference Manual</title>
-    <releaseinfo>For GUdev version &version;</releaseinfo>
-    <authorgroup>
-      <author>
-        <firstname>David</firstname>
-        <surname>Zeuthen</surname>
-        <affiliation>
-          <address>
-            <email>davidz@redhat.com</email>
-          </address>
-        </affiliation>
-      </author>
-      <author>
-        <firstname>Bastien</firstname>
-        <surname>Nocera</surname>
-        <affiliation>
-          <address>
-            <email>hadess@hadess.net</email>
-          </address>
-        </affiliation>
-      </author>
-    </authorgroup>
-
-    <copyright>
-      <year>2011</year>
-      <holder>The GUDev Authors</holder>
-    </copyright>
-
-    <legalnotice>
-      <para>
-        Permission is granted to copy, distribute and/or modify this
-        document under the terms of the <citetitle>GNU Free
-        Documentation License</citetitle>, Version 1.1 or any later
-        version published by the Free Software Foundation with no
-        Invariant Sections, no Front-Cover Texts, and no Back-Cover
-        Texts. You may obtain a copy of the <citetitle>GNU Free
-        Documentation License</citetitle> from the Free Software
-        Foundation by visiting <ulink type="http"
-        url="http://www.fsf.org">their Web site</ulink> or by writing
-        to:
-
-        <address>
-          The Free Software Foundation, Inc.,
-          <street>59 Temple Place</street> - Suite 330,
-          <city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>,
-          <country>USA</country>
-        </address>
-      </para>
-
-      <para>
-        Many of the names used by companies to distinguish their
-        products and services are claimed as trademarks. Where those
-        names appear in any freedesktop.org documentation, and those
-        trademarks are made aware to the members of the
-        freedesktop.org Project, the names have been printed in caps
-        or initial caps.
-      </para>
-    </legalnotice>
-  </bookinfo>
-
-  <reference id="ref-API">
-    <title>API Reference</title>
-    <partintro>
-      <para>
-        This part presents the class and function reference for the
-        <literal>libgudev</literal> library.
-      </para>
-    </partintro>
-    <xi:include href="xml/gudevclient.xml"/>
-    <xi:include href="xml/gudevdevice.xml"/>
-    <xi:include href="xml/gudevenumerator.xml"/>
-  </reference>
-
-  <chapter id="gudev-hierarchy">
-    <title>Object Hierarchy</title>
-      <xi:include href="xml/tree_index.sgml"/>
-  </chapter>
-  <index>
-    <title>Index</title>
-  </index>
-  <index role="165">
-    <title>Index of new symbols in 165</title>
-    <xi:include href="xml/api-index-165.xml"><xi:fallback /></xi:include>
-  </index>
-
-</book>

src/gudev/docs/gudev-sections.txt

-<SECTION>
-<FILE>gudevclient</FILE>
-<TITLE>GUdevClient</TITLE>
-GUdevClient
-GUdevClientClass
-GUdevDeviceType
-GUdevDeviceNumber
-g_udev_client_new
-g_udev_client_query_by_subsystem
-g_udev_client_query_by_device_number
-g_udev_client_query_by_device_file
-g_udev_client_query_by_sysfs_path
-g_udev_client_query_by_subsystem_and_name
-<SUBSECTION Standard>
-G_UDEV_CLIENT
-G_UDEV_IS_CLIENT
-G_UDEV_TYPE_CLIENT
-g_udev_client_get_type
-G_UDEV_CLIENT_CLASS
-G_UDEV_IS_CLIENT_CLASS
-G_UDEV_CLIENT_GET_CLASS
-<SUBSECTION Private>
-GUdevClientPrivate
-</SECTION>
-
-<SECTION>
-<FILE>gudevdevice</FILE>
-<TITLE>GUdevDevice</TITLE>
-GUdevDevice
-GUdevDeviceClass
-g_udev_device_get_subsystem
-g_udev_device_get_devtype
-g_udev_device_get_name
-g_udev_device_get_number
-g_udev_device_get_sysfs_path
-g_udev_device_get_driver
-g_udev_device_get_action
-g_udev_device_get_seqnum
-g_udev_device_get_device_type
-g_udev_device_get_device_number
-g_udev_device_get_device_file
-g_udev_device_get_device_file_symlinks
-g_udev_device_get_parent
-g_udev_device_get_parent_with_subsystem
-g_udev_device_get_tags
-g_udev_device_get_is_initialized
-g_udev_device_get_usec_since_initialized
-g_udev_device_get_property_keys
-g_udev_device_has_property
-g_udev_device_get_property
-g_udev_device_get_property_as_int
-g_udev_device_get_property_as_uint64
-g_udev_device_get_property_as_double
-g_udev_device_get_property_as_boolean
-g_udev_device_get_property_as_strv
-g_udev_device_get_sysfs_attr
-g_udev_device_get_sysfs_attr_as_int
-g_udev_device_get_sysfs_attr_as_uint64
-g_udev_device_get_sysfs_attr_as_double
-g_udev_device_get_sysfs_attr_as_boolean
-g_udev_device_get_sysfs_attr_as_strv
-<SUBSECTION Standard>
-G_UDEV_DEVICE
-G_UDEV_IS_DEVICE
-G_UDEV_TYPE_DEVICE
-g_udev_device_get_type
-G_UDEV_DEVICE_CLASS
-G_UDEV_IS_DEVICE_CLASS
-G_UDEV_DEVICE_GET_CLASS
-<SUBSECTION Private>
-GUdevDevicePrivate
-</SECTION>
-
-<SECTION>
-<FILE>gudevenumerator</FILE>
-<TITLE>GUdevEnumerator</TITLE>
-GUdevEnumerator
-GUdevEnumeratorClass
-g_udev_enumerator_new
-g_udev_enumerator_add_match_subsystem
-g_udev_enumerator_add_nomatch_subsystem
-g_udev_enumerator_add_match_sysfs_attr
-g_udev_enumerator_add_nomatch_sysfs_attr
-g_udev_enumerator_add_match_property
-g_udev_enumerator_add_match_name
-g_udev_enumerator_add_match_tag
-g_udev_enumerator_add_match_is_initialized
-g_udev_enumerator_add_sysfs_path
-g_udev_enumerator_execute
-<SUBSECTION Standard>
-G_UDEV_ENUMERATOR
-G_UDEV_IS_ENUMERATOR
-G_UDEV_TYPE_ENUMERATOR
-g_udev_enumerator_get_type
-G_UDEV_ENUMERATOR_CLASS
-G_UDEV_IS_ENUMERATOR_CLASS
-G_UDEV_ENUMERATOR_GET_CLASS
-<SUBSECTION Private>
-GUdevEnumeratorPrivate
-</SECTION>
-
-<SECTION>
-<FILE>gudevmarshal</FILE>
-<SUBSECTION Private>
-g_udev_marshal_VOID__STRING_OBJECT
-</SECTION>
-
-<SECTION>
-<FILE>gudevenumtypes</FILE>
-<SUBSECTION Private>
-G_TYPE_UDEV_DEVICE_TYPE
-g_udev_device_type_get_type
-</SECTION>

src/gudev/docs/gudev.types

-g_udev_device_type_get_type
-g_udev_device_get_type
-g_udev_client_get_type
-g_udev_enumerator_get_type

src/gudev/docs/version.xml.in

-@VERSION@

src/gudev/gudevclient.c

+/** @file gudevclient.c */
+
 /* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
  *
  * Copyright (C) 2008-2010 David Zeuthen <davidz@redhat.com>
 #include "gudevprivate.h"
 
 /**
- * SECTION:gudevclient
- * @short_description: Query devices and listen to uevents
+ * @defgroup gudevclient GUdevClient
+ * @ingroup gudev
+ * @brief Query devices and listen to uevents
  *
  * #GUdevClient is used to query information about devices on a Linux
  * system from the Linux kernel and the udev device
  * manager.
  *
- * Device information is retrieved from the kernel (through the
- * <literal>sysfs</literal> filesystem) and the udev daemon (through a
- * <literal>tmpfs</literal> filesystem) and presented through
- * #GUdevDevice objects. This means that no blocking IO ever happens
- * (in both cases, we are essentially just reading data from kernel
- * memory) and as such there are no asynchronous versions of the
- * provided methods.
+ * Device information is retrieved from the kernel (through the sysfs
+ * filesystem) and the udev daemon (through a tmpfs filesystem) and presented
+ * through #GUdevDevice objects. This means that no blocking IO ever happens
+ * (in both cases, we are essentially just reading data from kernel memory) and
+ * as such there are no asynchronous versions of the provided methods.
  *
  * To get #GUdevDevice objects, use
  * g_udev_client_query_by_subsystem(),
  * To listen to uevents, connect to the #GUdevClient::uevent signal.
  */
 
+/* @{ -- udevclient group */
+
 struct _GUdevClientPrivate
 {
   GSource *watch_source;
   gobject_class->finalize     = g_udev_client_finalize;
 
   /**
-   * GUdevClient:subsystems:
-   *
    * The subsystems to listen for uevents on.
    *
    * To listen for only a specific DEVTYPE for a given SUBSYSTEM, use
                                                        G_PARAM_READWRITE));
 
   /**
-   * GUdevClient::uevent:
-   * @client: The #GUdevClient receiving the event.
-   * @action: The action for the uevent e.g. "add", "remove", "change", "move", etc.
-   * @device: Details about the #GUdevDevice the event is for.
+   * @param client The #GUdevClient receiving the event.
+   * @param action The action for the uevent e.g. "add", "remove", "change", "move", etc.
+   * @param device Details about the #GUdevDevice the event is for.
    *
-   * Emitted when @client receives an uevent.
+   * Emitted when client receives an uevent.
    *
-   * This signal is emitted in the
-   * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
-   * of the thread that @client was created in.
+   * This signal is emitted in the thread-default main loop of the thread that
+   * client was created in.
    */
   signals[UEVENT_SIGNAL] = g_signal_new ("uevent",
                                          G_TYPE_FROM_CLASS (klass),
 }
 
 /**
- * g_udev_client_new:
- * @subsystems: (array zero-terminated=1) (element-type utf8) (transfer none) (allow-none): A %NULL terminated string array of subsystems to listen for uevents on, %NULL to not listen on uevents at all, or an empty array to listen to uevents on all subsystems. See the documentation for the #GUdevClient:subsystems property for details on this parameter.
+ * @param subsystems (array zero-terminated=1) (element-type utf8) (transfer none) (allow-none) A %NULL terminated string array of subsystems to listen for uevents on, %NULL to not listen on uevents at all, or an empty array to listen to uevents on all subsystems. See the documentation for the #GUdevClientsubsystems property for details on this parameter.
  *
- * Constructs a #GUdevClient object that can be used to query
- * information about devices. Connect to the #GUdevClient::uevent
- * signal to listen for uevents. Note that signals are emitted in the
- * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
- * of the thread that you call this constructor from.
+ * Constructs a #GUdevClient object that can be used to query information about
+ * devices. Connect to the #GUdevClient::uevent signal to listen for uevents.
+ * Note that signals are emitted in the thread-default main loop of the thread
+ * that you call this constructor from.
  *
- * Returns: A new #GUdevClient object. Free with g_object_unref().
+ * @return A new #GUdevClient object. Free with g_object_unref().
  */
 GUdevClient *
 g_udev_client_new (const gchar * const *subsystems)
 }
 
 /**
- * g_udev_client_query_by_subsystem:
- * @client: A #GUdevClient.
- * @subsystem: (allow-none): The subsystem to get devices for or %NULL to get all devices.
+ * @param client A #GUdevClient.
+ * @param subsystem (allow-none) The subsystem to get devices for or %NULL to get all devices.
  *
- * Gets all devices belonging to @subsystem.
+ * Gets all devices belonging to subsystem.
  *
- * Returns: (element-type GUdevDevice) (transfer full): A list of #GUdevDevice objects. The caller should free the result by using g_object_unref() on each element in the list and then g_list_free() on the list.
+ * @return (element-type GUdevDevice) (transfer full) A list of #GUdevDevice objects. The caller should free the result by using g_object_unref() on each element in the list and then g_list_free() on the list.
  */
 GList *
 g_udev_client_query_by_subsystem (GUdevClient  *client,
 }
 
 /**
- * g_udev_client_query_by_device_number:
- * @client: A #GUdevClient.
- * @type: A value from the #GUdevDeviceType enumeration.
- * @number: A device number.
+ * @param client A #GUdevClient.
+ * @param type A value from the #GUdevDeviceType enumeration.
+ * @param number A device number.
  *
  * Looks up a device for a type and device number.
  *
- * Returns: (transfer full): A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
+ * @return (transfer full) A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
  */
 GUdevDevice *
 g_udev_client_query_by_device_number (GUdevClient      *client,
 }
 
 /**
- * g_udev_client_query_by_device_file:
- * @client: A #GUdevClient.
- * @device_file: A device file.
+ * @param client A #GUdevClient.
+ * @param device_file A device file.
  *
  * Looks up a device for a device file.
  *
- * Returns: (transfer full): A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
+ * @return (transfer full) A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
  */
 GUdevDevice *
 g_udev_client_query_by_device_file (GUdevClient  *client,
 }
 
 /**
- * g_udev_client_query_by_sysfs_path:
- * @client: A #GUdevClient.
- * @sysfs_path: A sysfs path.
+ * @param client A #GUdevClient.
+ * @param sysfs_path A sysfs path.
  *
  * Looks up a device for a sysfs path.
  *
- * Returns: (transfer full): A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
+ * @return (transfer full) A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
  */
 GUdevDevice *
 g_udev_client_query_by_sysfs_path (GUdevClient  *client,
 }
 
 /**
- * g_udev_client_query_by_subsystem_and_name:
- * @client: A #GUdevClient.
- * @subsystem: A subsystem name.
- * @name: The name of the device.
+ * @param client A #GUdevClient.
+ * @param subsystem A subsystem name.
+ * @param name The name of the device.
  *
  * Looks up a device for a subsystem and name.
  *
- * Returns: (transfer full): A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
+ * @return (transfer full) A #GUdevDevice object or %NULL if the device was not found. Free with g_object_unref().
  */
 GUdevDevice *
 g_udev_client_query_by_subsystem_and_name (GUdevClient  *client,
   g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
   return client->priv->udev;
 }
+
+/* @} -- gudevclient group */

src/gudev/gudevdevice.c

+/** @file gudevdevice.c */
+
 /* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
  *
  * Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
 #include "gudevprivate.h"
 
 /**
- * SECTION:gudevdevice
- * @short_description: Get information about a device
+ * @defgroup gudev GUdev
+ *
+ * @copyright 2009-2011, Kay Sievers <kay.sievers@vrfy.org>
+ * @copyright 2011, The GUDev Authors
+ *
+ * @author David Zeuthen <davidz@redhat.com>
+ * @author Bastien Nocera <hadess@hadess.net>
+ *
+ * @par Legal notice
+ *
+ *         Permission is granted to copy, distribute and/or modify this document
+ *         under the terms of the GNU Free Documentation License, Version 1.1 or
+ *         any later version published by the Free Software Foundation with no
+ *         Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You
+ *         may obtain a copy of the GNU Free Documentation License from the Free
+ *         Software Foundation by visiting their web site or by writing to: The
+ *         Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ *         02111-1307, USA.
+ *
+ *         Many of the names used by companies to distinguish their
+ *         products and services are claimed as trademarks. Where those
+ *         names appear in any freedesktop.org documentation, and those
+ *         trademarks are made aware to the members of the
+ *         freedesktop.org Project, the names have been printed in caps
+ *         or initial caps.
+ */
+
+/**
+ * @defgroup gudevdevice GUdevDevice
+ * @ingroup gudev
+ * @brief Get information about a device
  *
  * The #GUdevDevice class is used to get information about a specific
  * device. Note that you cannot instantiate a #GUdevDevice object
  * #GUdevDevice whenever an event happens.
  */
 
+/* @{ -- gudevdevice group */
+
 struct _GUdevDevicePrivate
 {
   struct udev_device *udevice;
 }
 
 /**
- * g_udev_device_get_subsystem:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the subsystem for @device.
+ * Gets the subsystem for device.
  *
- * Returns: The subsystem for @device.
+ * @return The subsystem for device.
  */
 const gchar *
 g_udev_device_get_subsystem (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_devtype:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the device type for @device.
+ * Gets the device type for device.
  *
- * Returns: The devtype for @device.
+ * @return The devtype for device.
  */
 const gchar *
 g_udev_device_get_devtype (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_name:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the name of @device, e.g. "sda3".
+ * Gets the name of device, e.g. "sda3".
  *
- * Returns: The name of @device.
+ * @return The name of device.
  */
 const gchar *
 g_udev_device_get_name (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_number:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the number of @device, e.g. "3" if g_udev_device_get_name() returns "sda3".
+ * Gets the number of device, e.g. "3" if g_udev_device_get_name() returns "sda3".
  *
- * Returns: The number of @device.
+ * @return The number of device.
  */
 const gchar *
 g_udev_device_get_number (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_sysfs_path:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the sysfs path for @device.
+ * Gets the sysfs path for device.
  *
- * Returns: The sysfs path for @device.
+ * @return The sysfs path for device.
  */
 const gchar *
 g_udev_device_get_sysfs_path (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_driver:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the name of the driver used for @device.
+ * Gets the name of the driver used for device.
  *
- * Returns: The name of the driver for @device or %NULL if unknown.
+ * @return The name of the driver for device or %NULL if unknown.
  */
 const gchar *
 g_udev_device_get_driver (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_action:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the most recent action (e.g. "add", "remove", "change", etc.) for @device.
+ * Gets the most recent action (e.g. "add", "remove", "change", etc.) for device.
  *
- * Returns: An action string.
+ * @return An action string.
  */
 const gchar *
 g_udev_device_get_action (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_seqnum:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the most recent sequence number for @device.
+ * Gets the most recent sequence number for device.
  *
- * Returns: A sequence number.
+ * @return A sequence number.
  */
 guint64
 g_udev_device_get_seqnum (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_device_type:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the type of the device file, if any, for @device.
+ * Gets the type of the device file, if any, for device.
  *
- * Returns: The device number for @device or #G_UDEV_DEVICE_TYPE_NONE if the device does not have a device file.
+ * @return The device number for device or #G_UDEV_DEVICE_TYPE_NONE if the device does not have a device file.
  */
 GUdevDeviceType
 g_udev_device_get_device_type (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_device_number:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the device number, if any, for @device.
+ * Gets the device number, if any, for device.
  *
- * Returns: The device number for @device or 0 if unknown.
+ * @return The device number for device or 0 if unknown.
  */
 GUdevDeviceNumber
 g_udev_device_get_device_number (GUdevDevice *device)
 }
 
 /**
- * g_udev_device_get_device_file:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the device file for @device.
+ * Gets the device file for device.
  *
- * Returns: The device file for @device or %NULL if no device file
+ * @return The device file for device or %NULL if no device file
  * exists.
  */
 const gchar *
 }
 
 /**
- * g_udev_device_get_device_file_symlinks:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets a list of symlinks (in <literal>/dev</literal>) that points to
- * the device file for @device.
+ * Gets a list of symlinks (in /dev) that points to the device file for device.
  *
- * Returns: (transfer none) (array zero-terminated=1) (element-type utf8): A %NULL terminated string array of symlinks. This array is owned by @device and should not be freed by the caller.
+ * @return (transfer none) (array zero-terminated=1) (element-type utf8) A %NULL terminated string array of symlinks. This array is owned by device and should not be freed by the caller.
  */
 const gchar * const *
 g_udev_device_get_device_file_symlinks (GUdevDevice *device)
 /* ---------------------------------------------------------------------------------------------------- */
 
 /**
- * g_udev_device_get_parent:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets the immediate parent of @device, if any.
+ * Gets the immediate parent of device, if any.
  *
- * Returns: (transfer full): A #GUdevDevice or %NULL if @device has no parent. Free with g_object_unref().
+ * @return (transfer full) A #GUdevDevice or %NULL if device has no parent. Free with g_object_unref().
  */
 GUdevDevice *
 g_udev_device_get_parent (GUdevDevice  *device)
 }
 
 /**
- * g_udev_device_get_parent_with_subsystem:
- * @device: A #GUdevDevice.
- * @subsystem: The subsystem of the parent to get.
- * @devtype: (allow-none): The devtype of the parent to get or %NULL.
+ * @param device A #GUdevDevice.
+ * @param subsystem The subsystem of the parent to get.
+ * @param devtype (allow-none) The devtype of the parent to get or %NULL.
  *
- * Walks up the chain of parents of @device and returns the first
- * device encountered where @subsystem and @devtype matches, if any.
+ * Walks up the chain of parents of device and returns the first
+ * device encountered where subsystem and devtype matches, if any.
  *
- * Returns: (transfer full): A #GUdevDevice or %NULL if @device has no parent with @subsystem and @devtype. Free with g_object_unref().
+ * @return (transfer full) A #GUdevDevice or %NULL if device has no parent with subsystem and @devtype. Free with g_object_unref().
  */
 GUdevDevice *
 g_udev_device_get_parent_with_subsystem (GUdevDevice  *device,
 /* ---------------------------------------------------------------------------------------------------- */
 
 /**
- * g_udev_device_get_property_keys:
- * @device: A #GUdevDevice.
+ * @param device A #GUdevDevice.
  *
- * Gets all keys for properties on @device.
+ * Gets all keys for properties on device.
  *
- * Returns: (transfer none) (array zero-terminated=1) (element-type utf8): A %NULL terminated string array of property keys. This array is owned by @device and should not be freed by the caller.
+ * @return (transfer none) (array zero-terminated=1) (element-type utf8) A %NULL terminated string array of property keys. This array is owned by device and should not be freed by the caller.
  */
 const gchar* const *
 g_udev_device_get_property_keys (GUdevDevice *device)
 
 
 /**
- * g_udev_device_has_property:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
  * Check if a the property with the given key exists.
  *
- * Returns: %TRUE only if the value for @key exist.
+ * @return %TRUE only if the value for key exist.
  */
 gboolean
 g_udev_device_has_property (GUdevDevice  *device,
 }
 
 /**
- * g_udev_device_get_property:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
- * Look up the value for @key on @device.
+ * Look up the value for key on device.
  *
- * Returns: The value for @key or %NULL if @key doesn't exist on @device. Do not free this string, it is owned by @device.
+ * @return The value for key or %NULL if key doesn't exist on device. Do not free this string, it is owned by device.
  */
 const gchar *
 g_udev_device_get_property (GUdevDevice  *device,
 }
 
 /**
- * g_udev_device_get_property_as_int:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
- * Look up the value for @key on @device and convert it to an integer
+ * Look up the value for key on device and convert it to an integer
  * using strtol().
  *
- * Returns: The value for @key or 0 if @key doesn't exist or
+ * @return The value for key or 0 if key doesn't exist or
  * isn't an integer.
  */
 gint
 }
 
 /**
- * g_udev_device_get_property_as_uint64:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
- * Look up the value for @key on @device and convert it to an unsigned
+ * Look up the value for key on device and convert it to an unsigned
  * 64-bit integer using g_ascii_strtoull().
  *
- * Returns: The value  for @key or 0 if @key doesn't  exist or isn't a
+ * @return The value  for key or 0 if key doesn't  exist or isn't a
  * #guint64.
  */
 guint64
 }
 
 /**
- * g_udev_device_get_property_as_double:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
- * Look up the value for @key on @device and convert it to a double
+ * Look up the value for key on device and convert it to a double
  * precision floating point number using strtod().
  *
- * Returns: The value for @key or 0.0 if @key doesn't exist or isn't a
+ * @return The value for key or 0.0 if key doesn't exist or isn't a
  * #gdouble.
  */
 gdouble
 }
 
 /**
- * g_udev_device_get_property_as_boolean:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
- * Look up the value for @key on @device and convert it to an
+ * Look up the value for key on device and convert it to an
  * boolean. This is done by doing a case-insensitive string comparison
  * on the string value against "1" and "true".
  *
- * Returns: The value for @key or %FALSE if @key doesn't exist or
+ * @return The value for key or %FALSE if key doesn't exist or
  * isn't a #gboolean.
  */
 gboolean
 }
 
 /**
- * g_udev_device_get_property_as_strv:
- * @device: A #GUdevDevice.
- * @key: Name of property.
+ * @param device A #GUdevDevice.
+ * @param key Name of property.
  *
- * Look up the value for @key on @device and return the result of
+ * Look up the value for key on device and return the result of
  * splitting it into non-empty tokens split at white space (only space
  * (' '), form-feed ('\f'), newline ('\n'), carriage return ('\r'),
  * horizontal tab ('\t'), and vertical tab ('\v') are considered; the
  * locale is not taken into account).
  *
- * Returns: (transfer none) (array zero-terminated=1) (element-type utf8): The value of @key on @device split into tokens or %NULL if @key doesn't exist. This array is owned by @device and should not be freed by the caller.
+ * @return (transfer none) (array zero-terminated=1) (element-type utf8) The value of key on device split into tokens or %NULL if key doesn't exist. This array is owned by device and should n