mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
Add xmltoman to the distribution. This saves pulling in an external dependancy
This commit is contained in:
parent
5099ab7b8b
commit
517727ebdc
3 changed files with 231 additions and 43 deletions
26
configure.ac
26
configure.ac
|
|
@ -1009,32 +1009,6 @@ AC_ARG_ENABLE(manpages,
|
|||
*) 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 #####
|
||||
|
|
|
|||
|
|
@ -117,49 +117,47 @@ default.pa.5.xml: default.pa.5.xml.in Makefile
|
|||
-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 $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
esdcompat.1: esdcompat.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pax11publish.1: pax11publish.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
paplay.1: paplay.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pacat.1: pacat.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pacmd.1: pacmd.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pactl.1: pactl.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pasuspender.1: pasuspender.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
padsp.1: padsp.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pabrowse.1: pabrowse.1.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pulse-daemon.conf.5: pulse-daemon.conf.5.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
pulse-client.conf.5: pulse-client.conf.5.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
default.pa.5: default.pa.5.xml Makefile
|
||||
xmltoman $< > $@ || rm -f $@
|
||||
perl xmltoman $< > $@ || rm -f $@
|
||||
|
||||
xmllint: $(noinst_DATA)
|
||||
for f in $(noinst_DATA) ; do \
|
||||
|
|
@ -168,8 +166,6 @@ xmllint: $(noinst_DATA)
|
|||
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(man_MANS) \
|
||||
pulseaudio.1.xml.in \
|
||||
|
|
@ -185,6 +181,7 @@ EXTRA_DIST = \
|
|||
pulse-daemon.conf.5.xml.in \
|
||||
pulse-client.conf.5.xml.in \
|
||||
default.pa.5.xml.in \
|
||||
xmltoman \
|
||||
xmltoman.css \
|
||||
xmltoman.xsl \
|
||||
xmltoman.dtd
|
||||
|
|
|
|||
217
man/xmltoman
Executable file
217
man/xmltoman
Executable file
|
|
@ -0,0 +1,217 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
# xmltoman - simple xml to man converter
|
||||
# Copyright (C) 2000-2002 Oliver Kurth <oku@masqmail.cx>
|
||||
# 2003 Lennart Poettering <mzkzygbzna@0pointer.de>
|
||||
#
|
||||
# This program 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.
|
||||
#
|
||||
# This program 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 this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
use XML::Parser;
|
||||
|
||||
my $buffer = "";
|
||||
my $break_req = 0;
|
||||
|
||||
my @stack;
|
||||
my $stack_n = 0;
|
||||
|
||||
my $para = 0;
|
||||
|
||||
sub out {
|
||||
my $t = shift;
|
||||
|
||||
if ($t ne "") {
|
||||
print $t;
|
||||
$break_req=1;
|
||||
}
|
||||
}
|
||||
|
||||
sub out_buf {
|
||||
local $_;
|
||||
|
||||
my $space = shift;
|
||||
|
||||
$_ = $buffer;
|
||||
$buffer = "";
|
||||
|
||||
s/\n/\ /gm;
|
||||
s/\s+/\ /gm;
|
||||
s/^\s*//gm if (!$break_req);
|
||||
s/^\s$//gm if (!$space);
|
||||
|
||||
out($_);
|
||||
}
|
||||
|
||||
sub stack_push {
|
||||
my $a = shift;
|
||||
|
||||
if ($stack_n == 0 or $a ne $stack[$stack_n-1]) {
|
||||
out("\\fB") if $a =~ /^bold$/;
|
||||
out("\\fI") if $a =~ /^italic$/;
|
||||
}
|
||||
|
||||
$stack[$stack_n++] = $a;
|
||||
}
|
||||
|
||||
sub stack_pop {
|
||||
local $_;
|
||||
|
||||
if ($stack_n > 0) {
|
||||
$stack_n--;
|
||||
|
||||
if ($stack_n > 0) {
|
||||
$a = $stack[$stack_n-1];
|
||||
out("\\fB") if $a =~ /^bold$/;
|
||||
out("\\fI") if $a =~ /^italic$/;
|
||||
} else {
|
||||
out("\\f1");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub handle_start {
|
||||
local $_;
|
||||
my $expat = shift;
|
||||
my $element = shift;
|
||||
my %attr = @_;
|
||||
|
||||
$_ = $element;
|
||||
|
||||
if (/^manpage$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".TH " . $attr{name} . " " . $attr{section} . " User Manuals\n";
|
||||
print ".SH NAME\n";
|
||||
print $attr{name} . " \\- " . $attr{desc} . "\n";
|
||||
$break_req = 0;
|
||||
} elsif (/^synopsis$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".SH SYNOPSIS\n";
|
||||
$section = $element;
|
||||
$break_req = 0;
|
||||
stack_push("bold");
|
||||
} elsif (/^description$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".SH DESCRIPTION\n";
|
||||
$section = $element;
|
||||
$break_req = 0;
|
||||
} elsif (/^options$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".SH OPTIONS\n";
|
||||
$section = $element;
|
||||
$break_req = 0;
|
||||
} elsif (/^seealso$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".SH SEE ALSO\n";
|
||||
$section = $element;
|
||||
$break_req = 0;
|
||||
} elsif (/^section$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".SH ".uc($attr{name})."\n";
|
||||
$section = $attr{name};
|
||||
$break_req = 0;
|
||||
} elsif (/^option$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
print ".TP\n";
|
||||
$break_req = 0;
|
||||
} elsif (/^p$/ or /^cmd$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($para);
|
||||
$break_req = 0;
|
||||
} elsif (/^optdesc$/) {
|
||||
out_buf(0);
|
||||
$break_req = 0;
|
||||
} elsif (/^arg$/ or /^file$/) {
|
||||
out_buf(1);
|
||||
stack_push("italic");
|
||||
} elsif (/^opt$/) {
|
||||
out_buf(1);
|
||||
stack_push("bold");
|
||||
} elsif (/^manref$/) {
|
||||
out_buf(1);
|
||||
stack_push("bold");
|
||||
out($attr{name} ."(" . $attr{section} . ")");
|
||||
stack_pop();
|
||||
} elsif (/^url$/) {
|
||||
out_buf(1);
|
||||
stack_push("bold");
|
||||
out($attr{href});
|
||||
stack_pop();
|
||||
};
|
||||
|
||||
$para = 0;
|
||||
}
|
||||
|
||||
sub handle_end {
|
||||
local $_;
|
||||
my $expat = shift;
|
||||
my $element = shift;
|
||||
|
||||
$_ = $element;
|
||||
|
||||
$para = 0;
|
||||
|
||||
if (/^description$/ or /^options$/ or /^section$/ or /^seealso$/) {
|
||||
out_buf(0);
|
||||
} elsif (/^p$/ or /^cmd$/) {
|
||||
out_buf(0);
|
||||
print "\n" if ($break_req);
|
||||
$para = 1;
|
||||
$break_req = 0;
|
||||
} elsif (/^synopsis$/) {
|
||||
out_buf(0);
|
||||
stack_pop();
|
||||
} elsif (/^opt$/ or /^arg$/ or /^file$/) {
|
||||
out_buf(1);
|
||||
stack_pop();
|
||||
} elsif (/^manpage$/) {
|
||||
out_buf(0);
|
||||
print "\n" if $break_req;
|
||||
$break_req = 0;
|
||||
} elsif (/^optdesc$/ or /^cmd$/ or /^option$/) {
|
||||
# Simply ignore
|
||||
} else {
|
||||
out_buf(1);
|
||||
}
|
||||
};
|
||||
|
||||
sub handle_char {
|
||||
local $_;
|
||||
my $expat = shift;
|
||||
my $string = shift;
|
||||
|
||||
$buffer .= $string;
|
||||
}
|
||||
|
||||
MAIN:{
|
||||
my $file = shift;
|
||||
|
||||
if (!$file) {
|
||||
print STDERR "You need to specify a file to parse\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
my $parser = new XML::Parser(Handlers => {
|
||||
Start => \&handle_start,
|
||||
End => \&handle_end,
|
||||
Char => \&handle_char});
|
||||
|
||||
$parser->parsefile($file, ProtocolEncoding => 'ISO-8859-1');
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue