summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-11-05 15:10:13 +0000
committerLennart Poettering <lennart@poettering.net>2007-11-05 15:10:13 +0000
commitbff4ca431b0146cb0cbb3935905f50714072a0d9 (patch)
tree2932d19fe9f306d4629baaff17e2ff133bde3b59
parent961ce33b5ee183236363ef39d1afa93d8e5605b3 (diff)
add a man page for the pulseaudio binary. More will follow.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2023 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac40
-rw-r--r--man/Makefile.am60
-rw-r--r--man/pulseaudio.1.xml.in379
-rw-r--r--man/xmltoman.css30
-rw-r--r--man/xmltoman.dtd39
-rw-r--r--man/xmltoman.xsl129
-rw-r--r--src/daemon/cmdline.c2
8 files changed, 678 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 79608a22..a41dc6c8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,7 +18,7 @@
# USA.
EXTRA_DIST = bootstrap.sh LICENSE GPL LGPL doxygen/Makefile.am doxygen/Makefile.in doxygen/doxygen.conf.in README todo
-SUBDIRS=src doxygen
+SUBDIRS=src doxygen man
MAINTAINERCLEANFILES =
noinst_DATA =
diff --git a/configure.ac b/configure.ac
index 07db9823..f6e548bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,7 +28,7 @@ m4_define(PA_MAJOR, [0])
m4_define(PA_MINOR, [9])
m4_define(PA_MICRO, [7])
-AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzcbylcnhqvb (at) 0pointer (dot) de])
+AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign -Wall])
@@ -832,6 +832,43 @@ AC_SUBST(DBUS_LIBS)
AC_SUBST(HAVE_DBUS)
AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
+### Build and Install man pages ###
+AC_ARG_ENABLE(manpages,
+ AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]),
+[case "${enableval}" in
+ yes) manpages=yes ;;
+ no) manpages=no ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --disable-manpages]) ;;
+esac],[manpages=yes])
+
+if test x$manpages = xyes ; then
+ #
+ # XMLTOMAN manpage generation
+ #
+ AC_ARG_ENABLE(xmltoman,
+ AS_HELP_STRING([--disable-xmltoman],[Enable rebuilding of man pages with xmltoman]),
+ [case "${enableval}" in
+ yes) xmltoman=yes ;;
+ no) xmltoman=no ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --disable-xmltoman]) ;;
+ esac],[xmltoman=yes])
+
+ if test x$xmltoman = xyes ; then
+ AC_CHECK_PROG(have_xmltoman, xmltoman, yes, no)
+ fi
+
+ if test x$have_xmltoman = xno -o x$xmltoman = xno; then
+ if ! test -e man/pulseaudio.1 ; then
+ AC_MSG_ERROR([*** xmltoman was not found or was disabled, it is required to build the manpages as they have not been pre-built, install xmltoman, pass --disable-manpages or dont pass --disable-xmltoman])
+ exit 1
+ fi
+ AC_MSG_WARN([*** Not rebuilding man pages as xmltoman is not found ***])
+ xmltoman=no
+ fi
+fi
+AM_CONDITIONAL([USE_XMLTOMAN], [test "x$xmltoman" = xyes])
+AM_CONDITIONAL([BUILD_MANPAGES], [test "x$manpages" = xyes])
+
#### PulseAudio system group & user #####
AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=<user>],[User for running the PulseAudio daemon as a system-wide instance (pulse)]))
@@ -914,6 +951,7 @@ AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "x1"])
AC_CONFIG_FILES([
Makefile
src/Makefile
+man/Makefile
libpulse.pc
libpulse-simple.pc
libpulse-browse.pc
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 00000000..b701a2ea
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1,60 @@
+# $Id$
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+
+pulseconfdir=$(sysconfdir)/pulse
+
+if BUILD_MANPAGES
+
+man_MANS = \
+ pulseaudio.1
+
+noinst_DATA = \
+ pulseaudio.1.xml
+
+CLEANFILES = \
+ $(noinst_DATA)
+
+pulseaudio.1.xml: pulseaudio.1.xml.in Makefile
+ sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
+ -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
+ -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
+
+if USE_XMLTOMAN
+
+CLEANFILES += \
+ $(man_MANS)
+
+pulseaudio.1: pulseaudio.1.xml Makefile
+ xmltoman $< > $@
+
+xmllint: $(noinst_DATA)
+ for f in $(noinst_DATA) ; do \
+ xmllint --noout --valid "$$f" || exit 1 ; \
+ done
+
+endif
+
+endif
+
+EXTRA_DIST = \
+ $(man_MANS) \
+ pulseaudio.1.xml.in
+ xmltoman.css \
+ xmltoman.xsl \
+ xmltoman.dtd
diff --git a/man/pulseaudio.1.xml.in b/man/pulseaudio.1.xml.in
new file mode 100644
index 00000000..b30f4484
--- /dev/null
+++ b/man/pulseaudio.1.xml.in
@@ -0,0 +1,379 @@
+<?xml version="1.0"?><!--*-nxml-*-->
+<!DOCTYPE manpage SYSTEM "xmltoman.dtd">
+<?xml-stylesheet type="text/xsl" href="xmltoman.xsl" ?>
+
+<!-- $Id$ -->
+
+<!--
+This file is part of PulseAudio.
+
+PulseAudio is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of the
+License, or (at your option) any later version.
+
+PulseAudio is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
+Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with PulseAudio; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+USA.
+-->
+
+<manpage name="pulseaudio" section="1" desc="The PulseAudio Sound System">
+
+ <synopsis>
+ <cmd>pulseaudio [<arg>options</arg>]</cmd>
+ <cmd>pulseaudio <opt>--help</opt></cmd>
+ <cmd>pulseaudio <opt>--dump-conf</opt></cmd>
+ <cmd>pulseaudio <opt>--dump-modules</opt></cmd>
+ <cmd>pulseaudio <opt>--dump-resample-methods</opt></cmd>
+ <cmd>pulseaudio <opt>--cleanup-shm</opt></cmd>
+ <cmd>pulseaudio <opt>--kill</opt></cmd>
+ <cmd>pulseaudio <opt>--check</opt></cmd>
+ </synopsis>
+
+ <description>
+ <p>PulseAudio is a networked low-latency sound server for Linux, POSIX and Windows systems.</p>
+ </description>
+
+ <options>
+
+ <option>
+ <p><opt>-h | --help</opt></p>
+
+ <optdesc><p>Show help.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--version</opt></p>
+
+ <optdesc><p>Show version information.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--dump-conf</opt></p>
+
+ <optdesc><p>Load the daemon configuration file
+ <file>daemon.conf</file> (see below), parse remaining
+ configuration options on the command line and dump the resulting
+ daemon configuration, in a format that is compatible with
+ <file>daemon.conf</file>.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--dump-modules</opt></p>
+
+ <optdesc><p>List available loadable modules. Combine with
+ <opt>-v</opt> for a more elaborate listing.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--dump-resampe-methods</opt></p>
+ <optdesc><p>List available audio resamplers.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--cleanup-shm</opt></p>
+
+ <optdesc><p>Identify stale PulseAudio POSIX shared memory
+ segments in <file>/dev/shm</file> and remove them if
+ possible. This is done implicitly whenever a new daemon starts
+ up or a client tries to connect to a daemon. It should normally
+ not be necessary to issue this command by hand. Only available
+ on systems with POSIX shared memory segments implemented via a
+ virtual file system mounted to <file>/dev/shm</file>
+ (e.g. Linux).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-k | --kill</opt></p>
+
+ <optdesc><p>Kill an already running PulseAudio daemon of the
+ calling user (Equivalent to sending a SIGTERM).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--check</opt></p>
+
+ <optdesc><p>Return 0 as return code when the PulseAudio daemon
+ is already running for the calling user.</p></optdesc>
+ </option>
+
+
+ <option>
+ <p><opt>--system</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Run as system-wide instance instead of
+ per-user. Please not that this disables certain features of
+ PulseAudio and is generally not recommended unless the system
+ knows no local users (e.g. is a thin client). This feature needs
+ special configuration and a dedicated UNIX user set up. It is
+ highly recommended to combine this with
+ <opt>--disallow-module-loading</opt> (see below).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-D | --daemon</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Daemonize after startup, i.e. detach from the
+ terminal.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--fail</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Fail startup when any of the commands specified in
+ the startup script <file>default.pa</file> (see below)
+ fails.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--high-priority</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Try to acquire a high Unix nice level. This will
+ only succeed if the calling user has a non-zero RLIMIT_NICE
+ resource limit set (on systems that support this), or we're
+ called SUID root (see below), or we are configure to be run as
+ system daemon (see <arg>--system</arg> above). It is recommended
+ to enable this, since it is only a negligible security risk (see
+ below).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--realtime</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Try to acquire a real-time scheduling for
+ PulseAudio's I/O threads. This will only succeed if the calling
+ user has a non-zero RLIMIT_RTPRIO resource limit set (on systems
+ that support this), or we're called SUID root (see below), or we
+ are configure to be run as system daemon (see
+ <arg>--system</arg> above). It is recommended to enable this
+ only for trusted users, since it is a major security risk (see
+ below).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--disallow-module-loading</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Disallow module loading after startup. This is a
+ security feature since it disallows additional module loading
+ during runtime and on user request. It is highly recommended
+ when <arg>--system</arg> is used (see above). Note however, that
+ this breaks certain features like automatic module loading on hot
+ plug.</p></optdesc>
+
+ </option>
+
+ <option>
+ <p><opt>--exit-idle-time</opt><arg>=SECS</arg></p>
+
+ <optdesc><p>Terminate the daemon when idle and the specified
+ number of seconds passed.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--module-idle-time</opt><arg>=SECS</arg></p>
+
+ <optdesc><p>Unload autoloaded modules when idle and the
+ specified number of seconds passed.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--scache-idle-time</opt><arg>=SECS</arg></p>
+
+ <optdesc><p>Unload autoloaded samples from the cache when the
+ haven't been used for the specified number of
+ seconds.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--log-level</opt><arg>[=LEVEL]</arg></p>
+
+ <optdesc><p>If an argument is passed, set the log level to the
+ specified value, otherwise increase the configured verbosity
+ level by one. The log levels are numerical from 0 to 4,
+ corresponding to <arg>error</arg>, <arg>warn</arg>,
+ <arg>notice</arg>, <arg>info</arg>, <arg>debug</arg>. Default
+ log level is <arg>notice</arg>, i.e. all log messages with lower
+ log levels are printed: <arg>error</arg>, <arg>warn</arg>,
+ <arg>notice</arg>.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-v</opt></p>
+
+ <optdesc><p>Increase the configured verbosity level by one (see
+ <opt>--log-level</opt> above). Specify multiple times to
+ increase log level multiple times.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--log-target</opt><arg>={auto,syslog,stderr}</arg></p>
+
+ <optdesc><p>Specify the log target. If set to <arg>auto</arg>
+ (which is the default), then logging is directed to syslog when
+ <opt>--daemonize</opt> is passed, otherwise to
+ STDERR.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--p | --dl-search-path</opt><arg>=PATH</arg></p>
+
+ <optdesc><p>Set the search path for dynamic shared objects
+ (plugins).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--resample-method</opt><arg>=METHOD</arg></p>
+
+ <optdesc><p>Use the specified resampler by default (See
+ <opt>--dump-resample-methods</opt> above for possible
+ values).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--use-pid-file</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Create a PID file. If this options is disabled it is possible to run multiple sound servers per user.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--no-cpu-limit</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>Do not install CPU load limiter on platforms that
+ support it. By default, PulseAudio will terminate itself when it
+ notices that it takes up too much CPU time. This is useful as a
+ protection against system lockups when real-time scheduling is
+ used (see below). Disabling this meachnism is useful when
+ debugging PulseAudio with tools like <manref name="valgrind"
+ section="1"/> which slow down execution.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--disable-shm</opt><arg>[=BOOL]</arg></p>
+
+ <optdesc><p>PulseAudio clients and the server can exchange audio
+ data via POSIX shared memory segments (on systems that support
+ this). If disabled PulseAudio will communicate exclusively over
+ sockets. Please note that data transfer via shared memory
+ segments is always disabled when PulseAudio is running with
+ <opt>--system</opt> enabled (see above).</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-L | --load</opt><arg>="MODULE ARGUMENTS"</arg></p>
+
+ <optdesc><p>Load the specified plugin module with the specified
+ arguments.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-F | --file</opt><arg>=FILENAME</arg></p>
+
+ <optdesc><p>Run the specified script on startup. May be
+ specified multiple times to specify multiple scripts to be run
+ in order. Combine with <opt>-n</opt> to disable loading of the
+ default script <file>default.pa</file> (see below).</p></optdesc>
+ </option>
+ <option>
+ <p><opt>-C</opt></p>
+
+ <optdesc><p>Open a command interpreter on STDIN/STDOUT after
+ startup. This may be used to configure PulseAudio dynamically
+ during runtime. Equivalent to
+ <opt>--load</opt><arg>=module-cli</arg>.</p></optdesc>
+ </option>
+ <option>
+ <p><opt>-n</opt></p>
+
+ <optdesc><p>Don't load default script file
+ <file>default.pa</file> (see below) on startup. Useful in
+ conjunction with <opt>-C</opt> or
+ <opt>--file</opt>.</p></optdesc>
+ </option>
+
+
+ </options>
+
+ <section name="Files">
+
+ <p><file>~/.pulse/daemon.conf</file>,
+ <file>@pulseconfdir@/daemon.conf</file>: configuration settings
+ for the PulseAudio daemon. If the version in the user's home
+ directory does not exist the global configuration file is
+ loaded. See <manref name="pulse-daemon.conf" section="5"/> for
+ more information.</p>
+
+ <p><file>~/.pulse/default.pa</file>,
+ <file>@pulseconfdir@/default.pa</file>: the default configuration
+ script to execute when the PulseAudio daemon is started. If the
+ version in the user's home directory does not exist the global
+ configuration script is loaded. See <manref name="default.pa"
+ section="5"/> for more information.</p>
+
+ <p><file>~/.pulse/client.conf</file>,
+ <file>@pulseconfdir@/client.conf</file>: configuration settings
+ for PulseAudio client applications. If the version in the user's
+ home directory does not exist the global configuration file is
+ loaded. See <manref name="pulse-client.conf" section="5"/> for
+ more information.</p>
+
+ </section>
+
+ <section name="Signals">
+
+ <p><arg>SIGINT, SIGTERM</arg>: the PulseAudio daemon will shut
+ down (Same as <opt>--kill</opt>).</p>
+
+ <p><arg>SIGHUP</arg>: dump a long status report to STDOUT or
+ syslog, depending on the configuration.</p>
+
+ <p><arg>SIGUSR1</arg>: load module-cli, allowing runtime
+ reconfiguration via STDIN/STDOUT.</p>
+
+ <p><arg>SIGUSR2</arg>: load module-cli-protocol-unix, allowing
+ runtime reconfiguration via a AF_UNIX socket. See <manref
+ name="pacmd" section="1"/> for more information.</p>
+
+ </section>
+
+ <section name="UNIX Groups and users">
+
+ <p>Group <arg>pulse-rt</arg>: if the PulseAudio binary is marked
+ SUID root, then membership of the calling user in this group
+ decides whether real-time and/or high-priority scheduling is
+ enabled. Please note that enabling real-time scheduling is a
+ security risk (see below).</p>
+
+ <p>Group <arg>pulse-access</arg>: if PulseAudio is running as a system
+ daemon (see <opt>--system</opt> above) access is granted to
+ members of this group when they connect via AF_UNIX sockets. If
+ PulseAudio is running as a user daemon this group has no
+ meaning.</p>
+
+ <p>User <arg>pulse</arg>, group <arg>pulse</arg>: if PulseAudio is running as a system
+ daemon (see <opt>--system</opt> above) and is started as root the
+ daemon will drop priviliges and become a normal user process using
+ this user and group. If PulseAudio is running as a user daemon
+ this user and group has no meaning.</p>
+ </section>
+
+ <section name="Real-time and high-priority scheduling">
+ Blablub
+ </section>
+
+ <section name="Authors">
+ <p>The PulseAudio Developers &lt;@PACKAGE_BUGREPORT@&gt;; PulseAudio is available from <url href="@PACKAGE_URL@"/></p>
+ </section>
+
+ <section name="See also">
+ <p>
+ <manref name="pulse-daemon.conf" section="5"/>, <manref name="default.pa" section="5"/>, <manref name="pulse-client.conf" section="5"/>, <manref name="pacmd" section="1"/>
+ </p>
+ </section>
+
+</manpage>
diff --git a/man/xmltoman.css b/man/xmltoman.css
new file mode 100644
index 00000000..579a4fdc
--- /dev/null
+++ b/man/xmltoman.css
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/***
+ This file is part of PulseAudio.
+
+ PulseAudio is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with PulseAudio; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+***/
+
+body { color: black; background-color: white; }
+a:link, a:visited { color: #900000; }
+h1 { text-transform:uppercase; font-size: 18pt; }
+p { margin-left:1cm; margin-right:1cm; }
+.cmd { font-family:monospace; }
+.file { font-family:monospace; }
+.arg { text-transform:uppercase; font-family:monospace; font-style: italic; }
+.opt { font-family:monospace; font-weight: bold; }
+.manref { font-family:monospace; }
+.option .optdesc { margin-left:2cm; }
diff --git a/man/xmltoman.dtd b/man/xmltoman.dtd
new file mode 100644
index 00000000..121e62c8
--- /dev/null
+++ b/man/xmltoman.dtd
@@ -0,0 +1,39 @@
+<!-- $Id$ -->
+
+<!--
+ This file is part of PulseAudio.
+
+ PulseAudio is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with PulseAudio; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+-->
+
+<!ELEMENT manpage (synopsis | description | section | options | seealso)*>
+<!ATTLIST manpage name CDATA #REQUIRED section CDATA #REQUIRED desc CDATA #IMPLIED>
+<!ELEMENT arg (#PCDATA)>
+<!ELEMENT p (#PCDATA | arg | url | manref | opt | file )*>
+<!ELEMENT synopsis (cmd | p)+>
+<!ELEMENT description (p)+>
+<!ELEMENT section (p | option)*>
+<!ATTLIST section name CDATA #REQUIRED>
+<!ELEMENT option (#PCDATA | p | optdesc)*>
+<!ELEMENT optdesc (#PCDATA | p )*>
+<!ELEMENT cmd (#PCDATA | arg | opt)*>
+<!ELEMENT options (p | option)*>
+<!ELEMENT seealso (p)*>
+<!ELEMENT opt (#PCDATA)>
+<!ELEMENT file (#PCDATA)>
+<!ELEMENT manref EMPTY>
+<!ATTLIST manref name CDATA #REQUIRED section CDATA #REQUIRED href CDATA #IMPLIED>
+<!ELEMENT url EMPTY>
+<!ATTLIST url href CDATA #REQUIRED>
diff --git a/man/xmltoman.xsl b/man/xmltoman.xsl
new file mode 100644
index 00000000..8d4ca212
--- /dev/null
+++ b/man/xmltoman.xsl
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="iso-8859-15"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
+
+<!--
+ This file is part of PulseAudio.
+
+ PulseAudio is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with PulseAudio; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+-->
+
+<!-- $Id$ -->
+
+<xsl:output method="xml" version="1.0" encoding="iso-8859-15" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes"/>
+
+<xsl:template match="/manpage">
+
+ <html>
+
+ <head>
+ <title><xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>)</title>
+ <style type="text/css">
+ body { color: black; background-color: white; }
+ a:link, a:visited { color: #900000; }
+ h1 { text-transform:uppercase; font-size: 18pt; }
+ p { margin-left:1cm; margin-right:1cm; }
+ .cmd { font-family:monospace; }
+ .file { font-family:monospace; }
+ .arg { text-transform:uppercase; font-family:monospace; font-style: italic; }
+ .opt { font-family:monospace; font-weight: bold; }
+ .manref { font-family:monospace; }
+ .option .optdesc { margin-left:2cm; }
+ </style>
+ </head>
+ <body>
+ <h1>Name</h1>
+ <p><xsl:value-of select="@name"/>
+ <xsl:if test="string-length(@desc) &gt; 0"> - <xsl:value-of select="@desc"/></xsl:if>
+ </p>
+ <xsl:apply-templates />
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="p">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="cmd">
+ <p class="cmd">
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="arg">
+ <span class="arg"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="opt">
+ <span class="opt"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="file">
+ <span class="file"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="optdesc">
+ <div class="optdesc">
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="synopsis">
+ <h1>Synopsis</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seealso">
+ <h1>Synopsis</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="description">
+ <h1>Description</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="options">
+ <h1>Options</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="section">
+ <h1><xsl:value-of select="@name"/></h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="option">
+ <div class="option"><xsl:apply-templates/></div>
+</xsl:template>
+
+<xsl:template match="manref">
+ <xsl:choose>
+ <xsl:when test="string-length(@href) &gt; 0">
+ <a class="manref"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute><xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>)</a>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="manref"><xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>)</span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="url">
+ <a class="url"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute><xsl:value-of select="@href"/></a>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index 0c840449..cfd2c841 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -144,7 +144,7 @@ void pa_cmdline_help(const char *argv0) {
" --log-target={auto,syslog,stderr} Specify the log target\n"
" -p, --dl-search-path=PATH Set the search path for dynamic shared\n"
" objects (plugins)\n"
- " --resample-method=[METHOD] Use the specified resampling method\n"
+ " --resample-method=METHOD Use the specified resampling method\n"
" (See --dump-resample-methods for\n"
" possible values)\n"
" --use-pid-file[=BOOL] Create a PID file\n"