diff -r 333964c621f1 -r cb59d6afeb61 openpkg/man.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/openpkg/man.sh Tue Jan 06 23:40:39 2009 +0100
@@ -0,0 +1,154 @@
+#!@l_prefix@/lib/openpkg/bash
+##
+## man -- OpenPKG Tool Chain "man" command
+## Copyright (c) 2000-2007 OpenPKG Foundation e.V.
+## Copyright (c) 2000-2007 Ralf S. Engelschall
+##
+## Permission to use, copy, modify, and distribute this software for
+## any purpose with or without fee is hereby granted, provided that
+## the above copyright notice and this permission notice appear in all
+## copies.
+##
+## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+## SUCH DAMAGE.
+##
+
+# configuration
+prefix="@l_prefix@"
+
+# minimum command line parsing
+opt_h=no
+while [ 1 ]; do
+ case "$1" in
+ -h | --help ) opt_h=yes; shift ;;
+ * ) break ;;
+ esac
+done
+if [ ".$opt_h" = .yes ]; then
+ echo "openpkg:man:USAGE: openpkg man [--help] [] "
+ exit 0
+fi
+if [ $# -eq 1 ]; then
+ man_page="$1"
+elif [ $# -eq 2 ]; then
+ man_sect="$1"
+ man_page="$2"
+else
+ echo "openpkg:man:ERROR: invalid number of arguments" 1>&2
+ exit 1
+fi
+
+# determine path to commands
+openpkg_tools="${OPENPKG_TOOLS}"
+openpkg_tools_cmdpath="${OPENPKG_TOOLS_CMDPATH}"
+if [ ".${openpkg_tools}" != . -a ".${openpkg_tools_cmdpath}" = . ]; then
+ openpkg_tools_cmdpath="${openpkg_tools}/cmd:@"
+fi
+cmdpath="${prefix}/libexec/openpkg"
+if [ -d "${prefix}/libexec/openpkg-tools" ]; then
+ cmdpath="${prefix}/libexec/openpkg-tools:${cmdpath}"
+fi
+if [ -d "${prefix}/libexec/openpkg-audit" ]; then
+ cmdpath="${prefix}/libexec/openpkg-audit:${cmdpath}"
+fi
+if [ ".${openpkg_tools_cmdpath}" != . ]; then
+ cmdpath=`echo "${openpkg_tools_cmdpath}" | sed -e "s;@;${cmdpath};"`
+fi
+openpkg_tools_cmdpath=`echo "${cmdpath}" | sed -e 's/::/:/g' -e 's/^://' -e 's/:$//'`
+
+# search for manual page in OpenPKG Tool Chain
+man_file=""
+man_type=""
+OIFS="$IFS"; IFS=":"
+for dir in ${openpkg_tools_cmdpath}; do
+ IFS="$OIFS"
+ for file in $dir/$man_page.${man_sect-"1"} $dir/$man_page.[1-9]; do
+ if [ -f "$file" ]; then
+ man_file="$file"
+ man_type="roff"
+ if [ ".$man_sect" = . ]; then
+ man_sect=`echo "$man_file" |\
+ sed -e 's;^;X;' -e 's;^X.*\.\([1-9]\)$;\1;' -e 's;^X.*;;'`
+ fi
+ break
+ fi
+ done
+ if [ ".$man_type" = . ]; then
+ for file in $dir/$man_page.pod $dir/$man_page.pl $dir/$man_page.sh; do
+ if [ -f "$file" ]; then
+ if [ ".`grep '^=pod' $file`" != . ]; then
+ man_file="$file"
+ man_type="pod"
+ break
+ fi
+ fi
+ done
+ fi
+ if [ ".$man_type" != . ]; then
+ break
+ fi
+done
+IFS="$OIFS"
+if [ ".$man_type" != . ]; then
+ # determine POD to Roff converter
+ pod2roff=""
+ if [ ".$man_type" = .pod ]; then
+ pod2roff=`$prefix/lib/openpkg/shtool path -p "$prefix/bin:$PATH" pod2man`
+ if [ ".$pod2roff" = . ]; then
+ echo "openpkg:man:ERROR: unable to find POD to Roff converter (pod2man)" 1>&2
+ exit 1
+ fi
+ if [ ".$man_sect" = . ]; then
+ man_sect=1
+ fi
+ pod2roff="$pod2roff --section=${man_sect}"
+ pod2roff="$pod2roff --release=\"$man_page(${man_sect})\""
+ pod2roff="$pod2roff --center=OpenPKG --date=OpenPKG"
+ pod2roff="$pod2roff --quotes=none"
+ fi
+
+ # determine Roff to ASCII converter
+ roff2ascii=`$prefix/lib/openpkg/shtool path -p "$prefix/bin:$PATH" nroff groff`
+ if [ ".$roff2ascii" = . ]; then
+ echo "openpkg:man:ERROR: unable to find Roff to ASCII converter (nroff, groff)" 1>&2
+ exit 1
+ fi
+ roff2ascii="$roff2ascii -man"
+ case "$roff2ascii" in
+ */groff ) roff2ascii="$roff2ascii -Tascii" ;;
+ esac
+
+ # determine pager
+ pager="$PAGER"
+ if [ ".$pager" = . ]; then
+ pager=`$prefix/lib/openpkg/shtool path -p "$prefix/bin:$PATH" less more cat`
+ fi
+ if [ ".$pager" = . ]; then
+ echo "openpkg:man:ERROR: unable to find text viewer ($PAGER, less, more, cat)" 1>&2
+ exit 1
+ fi
+
+ # render the manual page to the TTY
+ if [ ".$man_type" = .roff ]; then
+ eval "$roff2ascii $man_file | $pager"
+ elif [ ".$man_type" = .pod ]; then
+ eval "$pod2roff $man_file | $roff2ascii | $pager"
+ fi
+ exit 0
+fi
+
+# fallback to the man(1) command
+MANPATH="$prefix/man:$prefix/local/man:${MANPATH-/usr/man}:/usr/man:/usr/share/man"
+export MANPATH
+eval "exec man $man_sect $man_page"
+