diff --git a/Makefile.am b/Makefile.am index 0992df54d..d8cec1d68 100644 --- a/Makefile.am +++ b/Makefile.am @@ -24,9 +24,9 @@ EXTRA_DIST = \ PROTOCOL \ README -SUBDIRS = src +SUBDIRS = src man -DIST_SUBDIRS = src +DIST_SUBDIRS = src man MAINTAINERCLEANFILES = noinst_DATA = diff --git a/configure.ac b/configure.ac index 7c0265651..68b0e234b 100644 --- a/configure.ac +++ b/configure.ac @@ -217,6 +217,9 @@ dnl keep this alphabetic per directory, please AC_CONFIG_FILES([ Makefile src/Makefile +man/Makefile +man/pinos.1.xml +man/pinos-monitor.1.xml pkgconfig/libpinos.pc ]) AC_OUTPUT diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 000000000..b42dcc115 --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,34 @@ +DISTCLEANFILES = \ + $(noinst_DATA) + +noinst_DATA = \ + pinos.1.xml \ + pinos-monitor.1.xml + +xmllint: $(noinst_DATA) + for f in $(noinst_DATA) ; do \ + xmllint --noout --valid "$$f" || exit 1 ; \ + done + +if BUILD_MANPAGES + +dist_man_MANS = \ + pinos.1 \ + pinos-monitor.1 + +CLEANFILES = \ + $(dist_man_MANS) + +%: %.xml Makefile + $(AM_V_GEN) perl $(srcdir)/xmltoman $< > $@ || rm -f $@ + +endif + +EXTRA_DIST = \ + pinos.1.xml.in \ + pinos-monitor.1.xml.in \ + xmltoman \ + xmltoman.css \ + xmltoman.xsl \ + xmltoman.dtd + diff --git a/man/pinos-monitor.1.xml.in b/man/pinos-monitor.1.xml.in new file mode 100644 index 000000000..43e29a4e9 --- /dev/null +++ b/man/pinos-monitor.1.xml.in @@ -0,0 +1,58 @@ + + + + + + + + + + pinos + + + +

Monitor objects on the Pinos service.

+
+ + + + + + + + + +
+

The Pinos Developers <@PACKAGE_BUGREPORT@>; Pinos is available from

+
+ +
+

+ , +

+
+ +
diff --git a/man/pinos.1.xml.in b/man/pinos.1.xml.in new file mode 100644 index 000000000..837a8e82d --- /dev/null +++ b/man/pinos.1.xml.in @@ -0,0 +1,59 @@ + + + + + + + + + + pinos + + + +

Pinos is a DBus service that allows access to multimedia devices + and allows media sharing between applications.

+
+ + + + + + + + + +
+

The Pinos Developers <@PACKAGE_BUGREPORT@>; Pinos is available from

+
+ +
+

+ , +

+
+ +
diff --git a/man/xmltoman b/man/xmltoman new file mode 100755 index 000000000..92422f037 --- /dev/null +++ b/man/xmltoman @@ -0,0 +1,216 @@ +#!/usr/bin/perl -w + +# xmltoman - simple xml to man converter +# Copyright (C) 2000-2002 Oliver Kurth +# 2003 Lennart Poettering +# +# 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, see . + +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'); +} diff --git a/man/xmltoman.css b/man/xmltoman.css new file mode 100644 index 000000000..a90c08990 --- /dev/null +++ b/man/xmltoman.css @@ -0,0 +1,27 @@ +/*** + This file is part of Pinos. + + Pinos 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. + + Pinos 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 Pinos; if not, see . +***/ + +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 000000000..a8f91e601 --- /dev/null +++ b/man/xmltoman.dtd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/man/xmltoman.xsl b/man/xmltoman.xsl new file mode 100644 index 000000000..8e49a1441 --- /dev/null +++ b/man/xmltoman.xsl @@ -0,0 +1,126 @@ + + + + + + + + + + + + + <xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>) + + + +

Name

+

+ - +

+ + + +
+ + +

+ +

+
+ + +

+ +

+
+ + + + + + + + + + + + + + +
+ +
+
+ + +

Synopsis

+ +
+ + +

Synopsis

+ +
+ + +

Description

+ +
+ + +

Options

+ +
+ + +

+ +
+ + +
+
+ + + + + () + + + () + + + + + + + + +
diff --git a/pinos.spec b/pinos.spec index 945f5c1cc..5d2da7564 100644 --- a/pinos.spec +++ b/pinos.spec @@ -130,6 +130,7 @@ make check \ %{_libdir}/libpinos-%{majorminor}.so %{_libdir}/libpinoscore-%{majorminor}.so %{_libdir}/gstreamer-1.0/libgstpinos.* +%{_mandir}/man1/pinos.1* %files libs %doc README LICENSE GPL LGPL @@ -142,6 +143,7 @@ make check \ %files utils %{_bindir}/pinos-monitor +%{_mandir}/man1/pinos-monitor.1* %changelog * Tue Sep 1 2015 Wim Taymans - 0.1.0-1