[PATCH] man: add man-page infrastructure

Kristian Høgsberg hoegsberg at gmail.com
Tue Sep 25 08:24:19 PDT 2012


On Mon, Sep 24, 2012 at 01:18:38PM +0200, David Herrmann wrote:
> This adds a man-page infrastructure based on Docbook XML files. This
> allows us to integrate the man-pages into the publican books later. An
> example page for wl_display_connect() (with an alias
> wl_display_connect_to_fd()) is also added.
> 
> Feel free to add more man-pages. Function calls are put in man3 and
> overview pages into man7. All pages (including aliases) have to be added
> to the Makefile.
> 
> Docbook does generate aliases automatically from the additional names that
> were put in the XML file. However, a small SED script is needed to fixup
> the include-paths in the generated troff files. If someone knows how to
> avoid that (or even install them gzip'ped), please fix it up.

Very nice, thanks for starting this.

Kristian

> Signed-off-by: David Herrmann <dh.herrmann at googlemail.com>
> ---
>  .gitignore                     |  2 +
>  configure.ac                   |  1 +
>  doc/Makefile.am                |  2 +-
>  doc/man/Makefile.am            | 45 +++++++++++++++++++++
>  doc/man/wl_display_connect.xml | 88 ++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 137 insertions(+), 1 deletion(-)
>  create mode 100644 doc/man/Makefile.am
>  create mode 100644 doc/man/wl_display_connect.xml
> 
> diff --git a/.gitignore b/.gitignore
> index 0f449f5..4f7a934 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -6,6 +6,8 @@
>  *.pc
>  *.so
>  *.swp
> +*.3
> +*.7
>  *~
>  .libs
>  cscope.out
> diff --git a/configure.ac b/configure.ac
> index 46b3cdf..4261ae6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -88,6 +88,7 @@ AC_CONFIG_FILES([Makefile
>  		 cursor/wayland-cursor-uninstalled.pc
>  		 doc/Makefile
>  		 doc/Wayland/Makefile
> +		 doc/man/Makefile
>  		 src/Makefile
>  		 src/wayland-server-uninstalled.pc
>  		 src/wayland-client-uninstalled.pc
> diff --git a/doc/Makefile.am b/doc/Makefile.am
> index f8046e7..f7d7813 100644
> --- a/doc/Makefile.am
> +++ b/doc/Makefile.am
> @@ -1 +1 @@
> -SUBDIRS = Wayland
> +SUBDIRS = Wayland man
> diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am
> new file mode 100644
> index 0000000..7d00b06
> --- /dev/null
> +++ b/doc/man/Makefile.am
> @@ -0,0 +1,45 @@
> +#
> +# This generates man-pages out of the Docbook XML files. Simply add your files
> +# to the $MANPAGES array. If aliases are created, please add them to the
> +# MANPAGES_ALIASES array so they get installed correctly.
> +#
> +
> +MANPAGES = \
> +	wl_display_connect.3
> +MANPAGES_ALIASES = \
> +	wl_display_connect_to_fd.3
> +
> +wl_display_connect_to_fd.3: wl_display_connect.3
> +
> +XML_FILES = \
> +	${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,$(MANPAGES)}}}}
> +CLEANFILES = $(MANPAGES) $(MANPAGES_ALIASES)
> +EXTRA_DIST = $(MANPAGES) $(MANPAGES_ALIASES) $(XML_FILES)
> +man_MANS = $(MANPAGES) $(MANPAGES_ALIASES)
> +
> +if HAVE_XSLTPROC
> +
> +XSLTPROC_FLAGS = \
> +	--stringparam man.authors.section.enabled 0 \
> +	--stringparam man.copyright.section.enabled 0 \
> +	--stringparam funcsynopsis.style ansi \
> +	--stringparam man.output.quietly 1
> +
> +XSLTPROC_PROCESS_MAN = \
> +	$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
> +	$(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< && \
> +	$(SED) -i -e 's/^\.so \(.*\)\.\(.\)$$/\.so man\2\/\1\.\2/' $(MANPAGES_ALIASES)
> +
> +%.1: %.xml
> +	$(XSLTPROC_PROCESS_MAN)
> +
> +%.3: %.xml
> +	$(XSLTPROC_PROCESS_MAN)
> +
> +%.5: %.xml
> +	$(XSLTPROC_PROCESS_MAN)
> +
> +%.7: %.xml
> +	$(XSLTPROC_PROCESS_MAN)
> +
> +endif # HAVE_XSLTPROC
> diff --git a/doc/man/wl_display_connect.xml b/doc/man/wl_display_connect.xml
> new file mode 100644
> index 0000000..b02abf0
> --- /dev/null
> +++ b/doc/man/wl_display_connect.xml
> @@ -0,0 +1,88 @@
> +<?xml version='1.0'?> <!--*-nxml-*-->
> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
> +          "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
> +
> +<!--
> +  Written 2012 by David Herrmann <dh.herrmann at googlemail.com>
> +  Dedicated to the Public Domain
> +-->
> +
> +<refentry id="wl_display_connect">
> +  <refentryinfo>
> +    <title>wl_display_connect</title>
> +    <productname>wayland-client</productname>
> +    <date>September 2012</date>
> +    <authorgroup>
> +      <author>
> +        <contrib>Developer</contrib>
> +        <firstname>David</firstname>
> +        <surname>Herrmann</surname>
> +        <email>dh.herrmann at googlemail.com</email>
> +      </author>
> +    </authorgroup>
> +  </refentryinfo>
> +
> +  <refmeta>
> +    <refentrytitle>wl_display_connect</refentrytitle>
> +    <manvolnum>3</manvolnum>
> +  </refmeta>
> +
> +  <refnamediv>
> +    <refname>wl_display_connect</refname>
> +    <refname>wl_display_connect_to_fd</refname>
> +    <refpurpose>Connect to a wayland socket</refpurpose>
> +  </refnamediv>
> +
> +  <refsynopsisdiv>
> +    <funcsynopsis>
> +
> +      <funcsynopsisinfo>#include <wayland-client.h></funcsynopsisinfo>
> +
> +      <funcprototype>
> +        <funcdef>struct wl_display *<function>wl_display_connect</function></funcdef>
> +        <paramdef>const char *<parameter>name</parameter></paramdef>
> +      </funcprototype>
> +
> +      <funcprototype>
> +        <funcdef>struct wl_display *<function>wl_display_connect_to_fd</function></funcdef>
> +        <paramdef>int <parameter>fd</parameter></paramdef>
> +      </funcprototype>
> +
> +    </funcsynopsis>
> +  </refsynopsisdiv>
> +
> +  <refsect1>
> +    <title>Description</title>
> +    <para><function>wl_display_connect</function> connects to a wayland socket
> +          that was previously opened by a wayland server. The server socket must
> +          be placed in <envar>XDG_RUNTIME_DIR</envar> for this function to
> +          find it. The <varname>name</varname> argument specifies the name of
> +          the socket or <constant>NULL</constant> to use the default (which is
> +          <constant>"wayland-0"</constant>). The environment variable
> +          <envar>WAYLAND_DISPLAY</envar> replaces the default value. If
> +          <envar>WAYLAND_SOCKET</envar> is set, this function behaves like
> +          <function>wl_display_connect_to_fd</function> with the file-descriptor
> +          number taken from the environment variable.</para>
> +
> +    <para><function>wl_display_connect_to_fd</function> connects to a wayland
> +          socket with an explicit file-descriptor. The file-descriptor is passed
> +          as argument <varname>fd</varname>.</para>
> +  </refsect1>
> +
> +  <refsect1>
> +    <title>Return Value</title>
> +    <para><function>wl_display_connect</function> and
> +          <function>wl_display_connect_to_fd</function> return a new display
> +          context object or NULL on failure. <varname>errno</varname> is set
> +          correspondingly.</para>
> +  </refsect1>
> +
> +  <refsect1>
> +    <title>See Also</title>
> +    <para>
> +      <citerefentry><refentrytitle>wayland-client</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
> +      <citerefentry><refentrytitle>wl_display_disconnect</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
> +      <citerefentry><refentrytitle>wl_display_iterate</refentrytitle><manvolnum>3</manvolnum></citerefentry>
> +    </para>
> +  </refsect1>
> +</refentry>
> -- 
> 1.7.12.1
> 


More information about the wayland-devel mailing list