OSSP CVS Repository

ossp - Check-in [4413]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 4413
Date: 2004-Feb-12 17:06:26 (local)
2004-Feb-12 16:06:26 (UTC)
User:rse
Branch:
Comment: Embedded the command documentation from shtool.pod into the individual sh.xxxx scripts and this way split the large shtool(1) manual page into individual manual pages shtool-xxxx(1).

Submitted partly by: Thomas Lotterer <thomas@lotterer.net>

Tickets:
Inspections:
Files:
ossp-pkg/shtool/.cvsignore      1.4 -> 1.5     2 inserted, 2 deleted
ossp-pkg/shtool/ChangeLog      1.194 -> 1.195     6 inserted, 1 deleted
ossp-pkg/shtool/Makefile.in      1.49 -> 1.50     29 inserted, 22 deleted
ossp-pkg/shtool/RATIONAL      added-> 1.1
ossp-pkg/shtool/README      1.100 -> 1.101     1 inserted, 1 deleted
ossp-pkg/shtool/THANKS      1.31 -> 1.32     1 inserted, 0 deleted
ossp-pkg/shtool/VERSION      1.75 -> 1.76     1 inserted, 1 deleted
ossp-pkg/shtool/sh.arx      1.20 -> 1.21     77 inserted, 1 deleted
ossp-pkg/shtool/sh.echo      1.37 -> 1.38     121 inserted, 2 deleted
ossp-pkg/shtool/sh.fixperm      1.17 -> 1.18     64 inserted, 1 deleted
ossp-pkg/shtool/sh.install      1.30 -> 1.31     120 inserted, 1 deleted
ossp-pkg/shtool/sh.mdate      1.13 -> 1.14     87 inserted, 2 deleted
ossp-pkg/shtool/sh.mkdir      1.23 -> 1.24     91 inserted, 2 deleted
ossp-pkg/shtool/sh.mkln      1.17 -> 1.18     68 inserted, 2 deleted
ossp-pkg/shtool/sh.mkshadow      1.23 -> 1.24     67 inserted, 1 deleted
ossp-pkg/shtool/sh.move      1.19 -> 1.20     77 inserted, 1 deleted
ossp-pkg/shtool/sh.path      1.26 -> 1.27     82 inserted, 1 deleted
ossp-pkg/shtool/sh.platform      1.4 -> 1.5     255 inserted, 2 deleted
ossp-pkg/shtool/sh.prop      1.17 -> 1.18     56 inserted, 1 deleted
ossp-pkg/shtool/sh.scpp      1.25 -> 1.26     154 inserted, 1 deleted
ossp-pkg/shtool/sh.slo      1.23 -> 1.24     85 inserted, 1 deleted
ossp-pkg/shtool/sh.subst      1.10 -> 1.11     99 inserted, 2 deleted
ossp-pkg/shtool/sh.table      1.19 -> 1.20     65 inserted, 1 deleted
ossp-pkg/shtool/sh.tarball      1.20 -> 1.21     93 inserted, 1 deleted
ossp-pkg/shtool/sh.version      1.35 -> 1.36     106 inserted, 1 deleted
ossp-pkg/shtool/shtool.pod      1.65 -> 1.66     21 inserted, 854 deleted
ossp-pkg/shtool/shtoolize.in      1.33 -> 1.34     5 inserted, 2 deleted

ossp-pkg/shtool/.cvsignore 1.4 -> 1.5

--- .cvsignore   2002/02/01 14:58:04     1.4
+++ .cvsignore   2004/02/12 16:06:26     1.5
@@ -4,6 +4,6 @@
 config.status
 configure
 shtool
-shtool.1
 shtoolize
-shtoolize.1
+*.1
+.timestamp


ossp-pkg/shtool/ChangeLog 1.194 -> 1.195

--- ChangeLog    2004/01/01 16:56:33     1.194
+++ ChangeLog    2004/02/12 16:06:26     1.195
@@ -9,7 +9,12 @@
 
  ChangeLog
 
- Changes between 1.6.2 and 2.0.0 (02-Nov-2002 to xx-Jan-2004):
+ Changes between 1.6.2 and 2.0.0 (02-Nov-2002 to xx-Feb-2004):
+
+   *) Embedded the command documentation from shtool.pod into the
+      individual sh.xxxx scripts and this way split the large shtool(1)
+      manual page into individual manual pages shtool-xxxx(1).
+      [Ralf S. Engelschall, Thomas Lotterer <thomas@lotterer.net>]
 
    *) Upgraded to GNU Autoconf 2.59 environment.
       [Ralf S. Engelschall]


ossp-pkg/shtool/Makefile.in 1.49 -> 1.50

--- Makefile.in  2004/01/01 16:54:20     1.49
+++ Makefile.in  2004/02/12 16:06:26     1.50
@@ -61,29 +61,28 @@
  sh.version \
  sh.path
 
-all: shtool shtool.1 shtoolize.1
+all: shtool manpages
 
 shtool: $(SCRIPTS) sh.common shtoolize
-        @$(SHELL) sh.echo -e "%BBuilding shtool program:%b"
+        @$(SHELL) sh.echo -e "%Bbuilding program shtool%b"
         ./shtoolize -o shtool all
 
-shtool.1: shtool.pod
-        @$(SHELL) sh.echo -e "%BBuilding shtool.1 manual page:%b"
-        V1=`$(SHELL) sh.version -l txt -d short VERSION`; \
+manpages: .timestamp
+.timestamp: shtoolize.pod shtool.pod $(SCRIPTS)
+        -@V1=`$(SHELL) sh.version -l txt -d short VERSION`; \
         V2=`$(SHELL) sh.version -l txt -d long VERSION`; \
         D=`$(SHELL) sh.version -l txt -d long VERSION | sed -e 's;.*(;;' -e 's;).*;;'`; \
-        $(POD2MAN) --section=1 --center="GNU Portable Shell Tool" \
-                   --release="$$D" --date="shtool $$V1" shtool.pod |\
-        sed -e "s;SHTOOL_VERSION_STR;$$V2;" >shtool.1
-
-shtoolize.1: shtoolize.pod
-        @$(SHELL) sh.echo -e "%BBuilding shtoolize.1 manual page:%b"
-        V1=`$(SHELL) sh.version -l txt -d short VERSION`; \
-        V2=`$(SHELL) sh.version -l txt -d long VERSION`; \
-        D=`$(SHELL) sh.version -l txt -d long VERSION | sed -e 's;.*(;;' -e 's;).*;;'`; \
-        $(POD2MAN) --section=1 --center="GNU Portable Shell Tool" \
-                   --release="$$D" --date="shtool $$V1" shtoolize.pod |\
-        sed -e "s;SHTOOL_VERSION_STR;$$V2;" >shtoolize.1
+        for ifile in shtoolize.pod shtool.pod $(SCRIPTS); do \
+            tfile=`echo "$$ifile" | sed -e 's/\.pod$$/.tmp/' -e 's/^sh\.\(.*\)$$/shtool-\1.tmp/'`; \
+            ofile=`echo "$$ifile" | sed -e 's/\.pod$$/.1/' -e 's/^sh\.\(.*\)$$/shtool-\1.1/'`; \
+                cp $$ifile $$tfile; \
+            $(SHELL) sh.echo -e "%Bbuilding manpage $$ofile%b"; \
+            $(POD2MAN) --section=1 --center="GNU Portable Shell Tool" \
+                       --release="$$D" --date="shtool $$V1" $$tfile |\
+            sed -e "s;SHTOOL_VERSION_STR;$$V2;" >$$ofile; \
+                rm -f $$tfile; \
+        done; \
+        touch .timestamp
 
 check: test
 test: all
@@ -98,8 +97,11 @@
         ./shtool mkdir -f -p -m 755 $(DESTDIR)$(pkgdatadir)
         ./shtool install -c -m 755 shtool $(DESTDIR)$(bindir)/shtool
         ./shtool install -c -m 755 shtoolize $(DESTDIR)$(bindir)/shtoolize
-        ./shtool install -c -m 644 shtool.1 $(DESTDIR)$(mandir)/man1/shtool.1
-        ./shtool install -c -m 644 shtoolize.1 $(DESTDIR)$(mandir)/man1/shtoolize.1
+        -@for ifile in shtoolize.pod shtool.pod $(SCRIPTS); do \
+            ofile=`echo "$$ifile" | sed -e 's/\.pod$$/.1/' -e 's/^sh\.\(.*\)$$/shtool-\1.1/'`; \
+            echo "./shtool install -c -m 644 $$ofile $(DESTDIR)$(mandir)/man1/$$ofile"; \
+            ./shtool install -c -m 644 $$ofile $(DESTDIR)$(mandir)/man1/$$ofile; \
+        done
         ./shtool install -c -m 644 shtool.m4 $(DESTDIR)$(aclocaldir)/shtool.m4
         @for script in sh.common $(SCRIPTS); do \
             echo "./shtool install -c -m 644 $$script $(DESTDIR)$(pkgdatadir)/$$script"; \
@@ -112,8 +114,11 @@
             $(RM) $(DESTDIR)$(pkgdatadir)/$$script; \
         done
         $(RM) $(DESTDIR)$(aclocaldir)/shtool.m4
-        $(RM) $(DESTDIR)$(mandir)/man1/shtoolize.1
-        $(RM) $(DESTDIR)$(mandir)/man1/shtool.1
+        -@for ifile in shtoolize.pod shtool.pod $(SCRIPTS); do \
+            ofile=`echo "$$ifile" | sed -e 's/\.pod$$/.1/' -e 's/^sh\.\(.*\)$$/shtool-\1.1/'`; \
+            echo "$(RM) $(DESTDIR)$(mandir)/man1/$$ofile"; \
+            $(RM) $(DESTDIR)$(mandir)/man1/$$ofile; \
+        done
         $(RM) $(DESTDIR)$(bindir)/shtoolize
         $(RM) $(DESTDIR)$(bindir)/shtool
         $(RMDIR) $(DESTDIR)$(aclocaldir) >/dev/null 2>&1 || $(TRUE)
@@ -125,9 +130,11 @@
         $(RMDIR) $(DESTDIR)$(prefix) >/dev/null 2>&1 || $(TRUE)
 
 clean:
-        $(RM) shtool shtool.1 shtoolize.1
+        $(RM) shtool
+        $(RM) *.1
 
 distclean: clean
         $(RM) Makefile shtoolize
         $(RM) config.cache config.status config.log
+        $(RM) .timestamp
 


ossp-pkg/shtool/RATIONAL -> 1.1

*** /dev/null    Sat Apr 27 21:45:32 2024
--- -    Sat Apr 27 21:45:48 2024
***************
*** 0 ****
--- 1,129 ----
+        _     _              _
+    ___| |__ | |_ ___   ___ | |
+   / __| '_ \| __/ _ \ / _ \| |
+   \__ \ | | | || (_) | (_) | |
+   |___/_| |_|\__\___/ \___/|_|
+ 
+   GNU shtool -- The GNU Portable Shell Tool
+ 
+   RATIONAL
+   ========
+ 
+   The Context
+ 
+   For the configuration, build and installation environment of modern
+   free software packages one nowadays uses GNU autoconf, GNU automake and
+   GNU libtool. GNU autoconf covers the configuration, GNU automake covers
+   the generation of the build environment and GNU libtool covers most of
+   a libraries build process. But at least when it comes to the installa-
+   tion step one usually have to use a few auxiliary scripts like
+   "mkdir.sh", "install.sh", etc. These scripts are replacements for sys-
+   tem tools and are required mainly for portability reasons. The result
+   is usually an "etc/" subdirectory in the source tree where over time a
+   lot shell scripts accumulate.
+ 
+   Maintainance Problem
+ 
+   The problem with those "etc/" shell scripts starts if one has to main-
+   tain lots of free software packages as it's the case for the author of
+   shtool. Then over time all "etc/" directories diverge and with every
+   day it gets more and more nasty to always keep them in sync. Especially
+   if some scripts were locally adjusted because no centralized main-
+   tainance location exists, of course. For autoconf no such problem
+   exists, because the resulting "configure" script is generated
+   on-the-fly. The same applies to automake and the various "Makefile.in"
+   files.
+ 
+   Only for libtool one always has to grab the latest copy. But because
+   it's just two files ("ltmain.sh" and "ltconfig"), keeping a source
+   trees in sync is not too complicated (especially not if using the handy
+   "libtoolize" program). But the "etc/" shell script mess is nasty, espe-
+   cially because there is no master version on the net. Additionally
+   everytime one starts a new project, one has to establish a new source
+   tree. For a GNU hacker it's immediately clear that autoconf and friends
+   are part of the game. But which "etc/" shell scripts are needed this
+   time? And from which existing source tree to copy them from?  Hmmm...
+   the same procedure as last year?!
+ 
+   The Aesthetic Problem
+ 
+   When a free software package has a large source tree (say, more than 50
+   files and especially with one or more subdirectories) it's usually no
+   problem to have an additional "etc/" subdirectory with some scripts.
+   They then totally go down. But for smaller packages, especially those
+   living in a single source directory (a degenerated tree), some people
+   (like the author of shtool) have aesthetic problems. Because it looks
+   strange to them that 20% of the files in the source tree are just aux-
+   iliary scripts. Sure, the actual amount of script code even shtool can-
+   not reduce, but shtool merges them together into a single file and this
+   way they optically totally disappear from the source tree.
+ 
+   This is a pure aesthetical issue, of course. But keep in mind that
+   hacking is a piece of art. And a well layouted source tree is a piece
+   of art for real hackers, too. Oh, and for those who really insist on a
+   technical reason: it's also easier to upgrade a single file than multi-
+   ple files ;)
+ 
+   Filling the gap
+ 
+   So, wouldn't it be nice to have a fourth package (beside autoconf,
+   automake and libtool) which fills the gap, i.e. which provides the
+   functionality of the old files in "etc/", is maintained at a central-
+   ized location and even consists of just a single (perhaps large) script
+   one can threat as a black box the same way one already does this for
+   libtool? The author thought this would be actually very useful and the
+   result is the current GNU shtool package which at least successfully
+   solved the above problems of the author.
+ 
+   The goals in detail
+ 
+   To better understand the intentions behind shtool and to avoid confu-
+   sion, here are the original goals of the shtool script:
+ 
+   1. It has to be self-contained and reside in a single file
+      This was achieved by compiling the resulting shtool script out of
+      the ingredient source scripts. The advantage is that shtool is still
+      easily maintainable, because one can test each script separately.
+      But the final functionality then resides in an all-in-one script
+      which can be easily spread over multiple source trees.
+ 
+   2. It has to cover all functionality of the old scripts
+      This was achieved by (re)implementing really all functionality which
+      experience showed is important in source trees of typical free soft-
+      ware packages.
+ 
+   3. It has to be maximum portable over all Unix flavors
+      This was achieved by basing the ingredient shell scripts only on
+      well-proven code which already survived practice in other projects
+      over more than a few months. Especially this means that a lot of
+      complicated emulations are done to avoid the use of unportable Unix
+      programs (like "fmt", "tr", etc) or unportable features of well-
+      known Unix programs (like shell functions, special "sed" features,
+      etc. pp). That's why shtool's code sometimes looks crazy and like
+      overkill to you. Don't think this is because of the authors crazy-
+      ness. Instead it's most of the time mainly for portability reasons.
+ 
+   4. It has to be clean and fully documented
+      This was achieved by reimplementing too ugly functionality from
+      scratch and cleaning up old shell script code plus writing a com-
+      plete set of manual pages.
+ 
+   5. It has to stay under a reasonable and common license
+      This was achieved by placing the shtool package under the GNU Gen-
+      eral Public License (GPL). This way the shtool package itself is
+      well protected and is guarrantied to be kept free software, but the
+      resulting shtool script can be nevertheless used in all types of
+      source trees. Notice here: given that one includes GNU shtool verba-
+      tim into an own source tree, one is justified in saying that it
+      remains separate from the own package, and that this way one is sim-
+      ply just using shtool. So, in this situation, there is no require-
+      ment that the package itself is licensed under the GNU General Pub-
+      lic License in order to take advantage of shtool. Keep this in mind
+      ;)
+ 
+   6. It has to be modularized for flexibility reasons
+      This was achieved by using an auxiliary tool shtoolize(1) which can
+      be used to build individual "shtool" scripts out of the ingredient
+      shell scripts. This way if one don't need all the available func-
+      tionality one can assemble together an individual "shtool" script.
+ 


ossp-pkg/shtool/README 1.100 -> 1.101

--- README       2004/01/01 16:56:33     1.100
+++ README       2004/02/12 16:06:26     1.101
@@ -10,7 +10,7 @@
   http://www.gnu.org/software/shtool/
   ftp://ftp.gnu.org/gnu/shtool/
 
-  Version 2.0b0 (01-Jan-2004)
+  Version 2.0b0 (12-Feb-2004)
 
   The GNU shtool program is a compilation of small but very stable and
   portable shell scripts into a single shell tool. All ingredients


ossp-pkg/shtool/THANKS 1.31 -> 1.32

--- THANKS       2003/08/13 14:20:34     1.31
+++ THANKS       2004/02/12 16:06:26     1.32
@@ -28,6 +28,7 @@
   o Thomas Linden            <tom@izb.net>
   o Mirko Liss               <mirko.liss@web.de>
   o Liones                   <liones@myrealbox.com>
+  o Thomas Lotterer          <thomas@lotterer.net>
   o Markus F.X.J. Oberhumer  <markus.oberhumer@jk.uni-linz.ac.at>
   o Benjamin Saller          <case@appliedtheory.com>
   o Michael Schloh           <michael@schloh.com>


ossp-pkg/shtool/VERSION 1.75 -> 1.76

--- VERSION      2004/01/01 16:56:33     1.75
+++ VERSION      2004/02/12 16:06:26     1.76
@@ -2,5 +2,5 @@
   VERSION -- Version Information for GNU shtool (syntax: Text)
   [automatically generated and maintained by GNU shtool]
 
-  This is GNU shtool, Version 2.0b0 (01-Jan-2004)
+  This is GNU shtool, Version 2.0b0 (12-Feb-2004)
 


ossp-pkg/shtool/sh.arx 1.20 -> 1.21

--- sh.arx       2004/01/01 16:54:20     1.20
+++ sh.arx       2004/02/12 16:06:26     1.21
@@ -1,7 +1,6 @@
 ##
 ##  arx -- Extended archive command
 ##  Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for shtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -99,3 +98,80 @@
     rm -rf $tmpdir
 fi
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool arx> - B<GNU shtool> ar(1) extensional command
+
+=head1 SYNOPSIS
+
+B<shtool arx>
+[B<-t>|B<--trace>]
+[B<-C>|B<--command> I<cmd>]
+I<op>
+I<archive>
+I<file> [I<file> ...]
+
+=head1 DESCRIPTION
+
+B<shtool arx> is a wrapper around the archiving tool ar(1). It provides
+the ability to create archives out of existing archives, i.e., if one of
+I<file> matches "C<*.a>", the archive member files of I<file> are used
+instead of I<file> itself.
+
+The trick of this command is the automatic handling of archive members
+which is especially interesting if one wants to construct a (usually
+top-level) library archive out of pre-built sub-library archives
+(usually staying inside subdirs) in a large source tree. For B<GNU
+libtool> based projects, a similar functionality is provided by B<GNU
+libtool> internally, too.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-t>, B<--trace>
+
+Shows the actually involved shell commands.
+
+=item B<-C>, B<--command> I<cmd>
+
+Set the used ar(1) command to I<cmd> instead of just "ar" (searched in C<$PATH>).
+
+=back
+
+=head1 EXAMPLE
+
+ #   Makefile
+ AR=ar
+ RANLIB=ranlib
+   :
+ OBJS=foo.o bar.o
+ LIBS=baz/libbaz.a quux/libquux.a
+   :
+ libfoo.a: $(OBJS) $(LIBS)
+     shtool arx -C $(AR) rc libfoo.a $(OBJS) $(LIBS)
+     $(RANLIB) libfoo.a
+
+=head1 HISTORY
+
+The B<GNU shtool> B<arx> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1999 for B<GNU shtool>. It
+was prompted by need to build libraries out of sub-libraries inside the
+B<OSSP> project.
+
+=head1 SEE ALSO
+
+shtool(1), ar(1).
+
+=cut
+


ossp-pkg/shtool/sh.echo 1.37 -> 1.38

--- sh.echo      2004/01/01 16:54:20     1.37
+++ sh.echo      2004/02/12 16:06:26     1.38
@@ -1,7 +1,6 @@
 ##
 ##  echo -- Print string with optional construct expansion
 ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for WML as buildinfo
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -20,7 +19,7 @@
 ##
 
 str_tool="echo"
-str_usage="[-n|--newline] [-e|--expand] [<str> ...]"
+str_usage="[-n|--newline] [-e|--expand] [<string> ...]"
 arg_spec="0+"
 opt_spec="n.e."
 opt_alias="n:newline,e:expand"
@@ -318,3 +317,123 @@
     fi
 fi
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool echo> - B<GNU shtool> echo(1) extensional command
+
+=head1 SYNOPSIS
+
+B<shtool echo>
+[B<-n>|B<--newline>]
+[B<-e>|B<--expand>]
+I<string>
+
+=head1 DESCRIPTION
+
+B<shtool echo> is an echo(1) style command which prints I<string> to
+F<stdout> and optionally provides special expansion constructs (terminal
+bold mode, environment details, date, etc) and newline control. The
+trick of this command is that it provides a portable B<-n> option and
+hides the gory details needed to find out the environment details under
+option B<-e>.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-n>, B<--newline>
+
+By default, output is written to F<stdout> followed by a "newline"
+(ASCII character 0x0a). If option B<-n> is used, this newline character
+is omitted.
+
+=item B<-e>, B<--expand>
+
+If option B<-e> is used, I<string> can contain special "B<%>I<x>"
+constructs which are expanded before the output is written. Currently
+the following constructs are recognized:
+
+=over 4
+
+=item B<%B>
+
+switch terminal mode to bold display mode.
+
+=item B<%b>
+
+switch terminal mode back to normal display mode.
+
+=item B<%u>
+
+the current user name.
+
+=item B<%U>
+
+the current user id (numerical).
+
+=item B<%g>
+
+the current group name.
+
+=item B<%G>
+
+the current group id (numerical).
+
+=item B<%h>
+
+the current hostname (without any domain extension).
+
+=item B<%d>
+
+the current domain name.
+
+=item B<%D>
+
+the current day of the month.
+
+=item B<%M>
+
+the current month (numerical).
+
+=item B<%m>
+
+the current month name.
+
+=item B<%Y>
+
+the current year.
+
+=back
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool echo -n -e "Enter your name [%B%u%b]: "; read name
+ shtool echo -e "Your Email address might be %u@%h%d"
+ shtool echo -e "The current date is %D-%m-%Y"
+
+=head1 HISTORY
+
+The B<GNU shtool> B<echo> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1998 for I<Website META
+Language> (WML) under the name B<buildinfo>. It was later taken over
+into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), echo(1).
+
+=cut
+


ossp-pkg/shtool/sh.fixperm 1.17 -> 1.18

--- sh.fixperm   2004/01/01 16:54:20     1.17
+++ sh.fixperm   2004/02/12 16:06:26     1.18
@@ -1,7 +1,6 @@
 ##
 ##  fixperm -- Fix file permissions inside a source tree
 ##  Copyright (c) 1996-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for ePerl
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -77,3 +76,67 @@
     done
 done
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool fixperm> - B<GNU shtool> file permission fixing command
+
+=head1 SYNOPSIS
+
+B<shtool fixperm>
+[B<-v>|B<--verbose>]
+[B<-t>|B<--trace>]
+I<path>
+[I<path> ...]
+
+=head1 DESCRIPTION
+
+B<shtool fixperm> fixes file permissions inside a source tree under
+I<path> by cleaning up the permission bits. It determines the cleaned up
+permission from the already set bits. It is intended to be run before
+a tarball is rolled (usually with B<shtool tarball>) out of a source
+tree. The trick is that this is more convenient than having to set the
+permissions manually or by using a large file list.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=back
+
+=head1 EXAMPLE
+
+ #   Makefile.in
+ dist:
+     shtool fixperm -v *
+     ...
+
+=head1 HISTORY
+
+The B<GNU shtool> B<fixperm> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1996 for I<OSSP eperl>.
+It was later taken over into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), chmod(1).
+
+=cut
+


ossp-pkg/shtool/sh.install 1.30 -> 1.31

--- sh.install   2004/01/01 16:54:20     1.30
+++ sh.install   2004/02/12 16:06:26     1.31
@@ -1,7 +1,6 @@
 ##
 ##  install -- Install a program, script or datafile
 ##  Copyright (c) 1997-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for shtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -191,3 +190,123 @@
     fi
 done
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool install> - B<GNU shtool> install(1) command
+
+=head1 SYNOPSIS
+
+B<shtool install>
+[B<-v>|B<--verbose>]
+[B<-t>|B<--trace>]
+[B<-d>|B<--mkdir>]
+[B<-c>|B<--copy>]
+[B<-C>|B<--compare-copy>]
+[B<-s>|B<--strip>]
+[B<-m>|B<--mode> I<mode>]
+[B<-o>|B<--owner> I<owner>]
+[B<-g>|B<--group> I<group>]
+[B<-e>|B<--exec> I<sed-cmd>]
+I<file> [I<file> ...]
+I<path>
+
+=head1 DESCRIPTION
+
+This command installs a one or more I<file>s to a given target I<path>
+providing all important options of the BSD install(1) command.
+The trick is that the functionality is provided in a portable way.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=item B<-d>, B<--mkdir>
+
+To maximize BSD compatiblity, the BSD "B<shtool> C<install -d>" usage is
+internally mapped to the "B<shtool> C<mkdir -f -p -m 755>" command.
+
+=item B<-c>, B<--copy>
+
+Copy the I<file> to the target I<path>. Default is to move.
+
+=item B<-C>, B<--compare-copy>
+
+Same as B<-c> except if the destination file already exists and is
+identical to the source file, no installation is done and the target
+remains untouched.
+
+=item B<-s>, B<--strip>
+
+This option strips program executables during the installation, see
+strip(1). Default is to install verbatim.
+
+=item B<-m>, B<--mode> I<mode>
+
+The file mode applied to the target, see chmod(1). Setting mode to
+"C<->" skips this step and leaves the operating system default which is
+usually based on umask(1). Some file modes require superuser privileges
+to be set. Default is 0755.
+
+=item B<-o>, B<--owner> I<owner>
+
+The file owner name or id applied to the target, see chown(1). This
+option requires superuser privileges to execute. Default is to skip this
+step and leave the operating system default which is usually based on
+the executing uid or the parent setuid directory.
+
+=item B<-g>, B<--group> I<group>
+
+The file group name or id applied to the target, see chgrp(1). This
+option requires superuser privileges to execute to the fullest extend,
+otherwise the choice of I<group> is limited on most operating systems.
+Default is to skip this step and leave the operating system default
+which is usually based on the executing gid or the parent setgid
+directory.
+
+=item B<-e>, B<--exec> I<sed-cmd>
+
+This option can be used one or multiple times to apply one or more
+sed(1) commands to the file contents during installation.
+
+=back
+
+=head1 EXAMPLE
+
+ #   Makefile
+ install:
+      :
+     shtool install -c -s -m 4755 foo $(bindir)/
+     shtool install -c -m 644 foo.man $(mandir)/man1/foo.1
+     shtool install -c -m 644 -e "s/@p@/$prefix/g" foo.conf $(etcdir)/
+
+=head1 HISTORY
+
+The B<GNU shtool> B<install> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1997 for B<GNU shtool>. It
+was prompted by portability issues in the installation procedures of
+B<OSSP> libraries.
+
+=head1 SEE ALSO
+
+shtool(1), umask(1), chmod(1), chown(1), chgrp(1), strip(1), sed(1).
+
+=cut
+


ossp-pkg/shtool/sh.mdate 1.13 -> 1.14

--- sh.mdate     2003/04/04 16:36:01     1.13
+++ sh.mdate     2004/02/12 16:06:26     1.14
@@ -1,8 +1,7 @@
 ##
 ##  mdate -- Pretty-print modification time of a file or dir
 ##  Copyright (c) 1995-1997 Free Software Foundation, Inc.
-##  Originally idea and basis code by Ulrich Drepper
-##  Enhanced by Ralf S. Engelschall for shtool
+##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -150,3 +149,89 @@
 }' "day=$day" "month=$month" "year=$year" \
    "field=$opt_f" "order=$opt_o" "newline=$opt_n"
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool mdate> - B<GNU shtool> pretty-print last modification time
+
+=head1 SYNOPSIS
+
+B<shtool mdate>
+[B<-n>|B<--newline>]
+[B<-z>|B<--zero>]
+[B<-s>|B<--shorten>]
+[B<-d>|B<--digits>]
+[B<-f>|B<--field-sep> I<str>]
+[B<-o>|B<--order> I<spec>]
+I<path>
+
+=head1 DESCRIPTION
+
+This command pretty-prints the last modification time of a given file or
+directory I<path>, while still allowing one to specify the format of the
+date to display.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-n>, B<--newline>
+
+By default, output is written to F<stdout> followed by a "newline"
+(ASCII character 0x0a). If option B<-n> is used, this newline character
+is omitted.
+
+=item B<-z>, B<--zero>
+
+Pads numeric day and numeric month with a leading zero. Default is to
+have variable width.
+
+=item B<-s>, B<--shorten>
+
+Shortens the name of the month to a english three character
+abbreviation. Default is full english name. This option is silently
+ignored when combined with B<-d>.
+
+=item B<-d>, B<--digits>
+
+Use digits for month. Default is to use a english name.
+
+=item B<-f>, B<--field-sep> I<str>
+
+Field separator string between the day month year tripple. Default is a
+single space character.
+
+=item B<-o>, B<--order> I<spec>
+
+Specifies order of the day month year elements within the tripple. Each
+element represented as a single character out of ``C<d>'', ``C<m>'' and
+``C<y>''. The default for I<spec> is ``C<dmy>''.
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool mdate -n /
+ shtool mdate -f '/' -z -d -o ymd foo.txt
+ shtool mdate -f '-' -s foo.txt
+
+=head1 HISTORY
+
+The B<GNU shtool> B<mdate> command was originally written by
+Ulrich Drepper in 1995 and revised by Ralf S. Engelschall
+E<lt>rse@engelschall.comE<gt> in 1998 for inclusion into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), date(1), ls(1).
+
+=cut
+


ossp-pkg/shtool/sh.mkdir 1.23 -> 1.24

--- sh.mkdir     2004/01/01 16:54:20     1.23
+++ sh.mkdir     2004/02/12 16:06:27     1.24
@@ -1,8 +1,6 @@
 ##
 ##  mkdir -- Make one or more directories
 ##  Copyright (c) 1996-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for public domain by Noah Friedman <friedman@prep.ai.mit.edu>
-##  Cleaned up and enhanced for shtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -112,5 +110,96 @@
         done
     fi
 done
+
 shtool_exit $errstatus
 
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool mkdir> - B<GNU shtool> mkdir(1) style command
+
+=head1 SYNOPSIS
+
+B<shtool mkdir>
+[B<-t>|B<--trace>]
+[B<-f>|B<--force>]
+[B<-p>|B<--parents>]
+[B<-m>|B<--mode> I<mode>]
+[B<-o>|B<--owner> I<owner>]
+[B<-g>|B<--group> I<group>]
+I<dir> [I<dir> ...]
+
+=head1 DESCRIPTION
+
+This is a mkdir(1) style command with additional options and the ability
+to be smart if the directory already exists which is important for
+installation procedures.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-t>, B<--trace>
+
+Shows the actually involved shell commands.
+
+=item B<-f>, B<--force>
+
+Forced continuation and no complaints if directory already exists.
+Default is to terminate with error.
+
+=item B<-p>, B<--parents>
+
+Automatic parent directory creation. Default is to only create the last
+directory in the path and fail if parents are missing.
+
+=item B<-m>, B<--mode> I<mode>
+
+The directory mode applied to the directory, see chmod(1). Omitting mode
+skips this step and leaves the operating system default which is usually
+based on umask(1). Some directory modes require superuser privileges to
+be set. Default is to stick with operating system defaults.
+
+=item B<-o>, B<--owner> I<owner>
+
+The directory owner name or id applied to the directory, see chown(1).
+This option requires superuser privileges to execute. Default is to skip
+this step and leave the operating system default which is usually based
+on the executing uid or the parent setuid directory.
+
+=item B<-g>, B<--group> I<group>
+
+The directory group name or id applied to the directory, see chgrp(1). This
+option requires superuser privileges to execute to the fullest extend,
+otherwise the choice of I<group> is limited on most operating systems.
+Default is to skip this step and leave the operating system default
+which is usually based on the executing gid or the parent setgid
+directory.
+
+=head1 EXAMPLE
+
+ #   Makefile
+ install:
+     shtool mkdir -f -p -m 755 $(bindir)
+     shtool mkdir -f -p -m 755 $(mandir)/man1
+      :
+
+=head1 HISTORY
+
+The B<GNU shtool> B<mkdir> command was originally written for Public
+Domain by Noah Friedman and later revised by Ralf S. Engelschall
+E<lt>rse@engelschall.comE<gt> in 1999 for inclusion into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), mkdir(1).
+
+=cut
+


ossp-pkg/shtool/sh.mkln 1.17 -> 1.18

--- sh.mkln      2004/01/01 16:54:20     1.17
+++ sh.mkln      2004/02/12 16:06:27     1.18
@@ -1,7 +1,6 @@
 ##
 ##  mkln -- Make link with calculation of relative paths
-##  Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for shtool
+##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -172,3 +171,70 @@
     eval ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase
 done
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool mkln> - B<GNU shtool> enhanced ln(1) replacement
+
+=head1 SYNOPSIS
+
+B<shtool mkln>
+[B<-t>|B<--trace>]
+[B<-f>|B<--force>]
+[B<-s>|B<--symbolic>]
+I<src-path> [I<src-path> ...]
+I<dst-path>
+
+=head1 DESCRIPTION
+
+This is a ln(1) style command. It is enhanced to provide automatic
+calculation and usage of relative links with the shortest possible path,
+if possible. Usually if I<src-path> and I<dst-path> are not absolute
+paths or at least they share a common prefix except the root directory
+(``C</>''). When more than one I<src-path> is specified, all of them are
+linked into I<dst-path>.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=item B<-f>, B<--force>
+
+Force the creation of the link even if it exists. Default is to fail
+with error.
+
+=item B<-s>, B<--symbolic>
+
+Create a symbolic link instead of a hard-link.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool mkln -s foo/bar baz/quux
+
+=head1 HISTORY
+
+The B<GNU shtool> B<fixperm> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1998 for I<ePerl>.
+
+=head1 SEE ALSO
+
+shtool(1), ln(1).
+
+=cut
+


ossp-pkg/shtool/sh.mkshadow 1.23 -> 1.24

--- sh.mkshadow  2004/01/01 16:54:20     1.23
+++ sh.mkshadow  2004/02/12 16:06:27     1.24
@@ -1,7 +1,6 @@
 ##
 ##  mkshadow -- Make a shadow tree through symbolic links
 ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for Apache
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -139,3 +138,70 @@
      ln -s $from $to
 done
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool mkshadow> - B<GNU shtool> create shadow tree using symlinks
+
+=head1 SYNOPSIS
+
+B<shtool mkshadow>
+[B<-v>|B<--verbose>]
+[B<-t>|B<--trace>]
+[B<-a>|B<--all>]
+I<src-dir>
+I<dst-dir>
+
+=head1 DESCRIPTION
+
+This command creates a shadow tree of I<src-dir> under I<dst-dir> by
+recreating the directory hierarchy of I<src-dir> under I<dst-dir> and by
+creating the files of I<src-dir> by linking them into the corresponding
+directories under I<dst-dir> via symbolic links. When I<src-dir> can
+be reached via relative paths from I<dst-dir>, relative symbolic links
+are used, too. This high-level functionality is originally designed for
+developers to create copies of source trees.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=item B<-a>, B<--all>
+
+Really shadow all files and directories in I<src-dir>. Default is to
+skip CVS related files and directories, backup files, object files, etc.
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool mkshadow -v -a . /tmp/shadow
+
+=head1 HISTORY
+
+The B<GNU shtool> B<mkshadow> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1998 for B<Apache>. It was
+later revised and taken over into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), ln(1).
+
+=cut
+


ossp-pkg/shtool/sh.move 1.19 -> 1.20

--- sh.move      2004/01/01 16:54:20     1.19
+++ sh.move      2004/02/12 16:06:27     1.20
@@ -1,7 +1,6 @@
 ##
 ##  move -- Move files with simultaneous substitution
 ##  Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for shtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -113,5 +112,82 @@
         break;
     fi
 done
+
 shtool_exit $errorstatus
 
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool move> - B<GNU shtool> enhanced mv(1) replacement
+
+=head1 SYNOPSIS
+
+B<shtool move>
+[B<-v>|B<--verbose>]
+[B<-t>|B<--trace>]
+[B<-e>|B<--expand>]
+[B<-p>|B<--preserve>]
+I<src-file>
+I<dst-file>
+
+=head1 DESCRIPTION
+
+This is a mv(1) style command enhanced with the ability to rename
+multiple files in a single operation and the ability to detect and not
+touch existing equal destinations files, thus preserving timestamps.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=item B<-e>, B<--expand>
+
+Expand asterisk in I<src> to be used as "C<%>I<n>" (where I<n> is
+C<1>,C<2>,...) in I<dst-file>. This is useful for renaming multiple
+files at once.
+
+=item B<-p>, B<--preserve>
+
+Detect I<src-file> and I<dst-file> having equal content and not touch
+existing destination files, thus perserving timestamps. This is useful
+for applications that monitor timestamps, i.e. suppress make(1L)
+repeating actions for unchanged files.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool move -v -e '*.txt' %1.asc
+
+ #   Makefile
+ scanner.c: scanner.l
+     lex scanner.l
+     shtool move -t -p lex.yy.c scanner.c
+
+=head1 HISTORY
+
+The B<GNU shtool> B<move> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1999 for B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), mv(1), make(1).
+
+=cut
+


ossp-pkg/shtool/sh.path 1.26 -> 1.27

--- sh.path      2004/01/01 16:54:20     1.26
+++ sh.path      2004/02/12 16:06:27     1.27
@@ -1,7 +1,6 @@
 ##
 ##  path -- Deal with program paths
 ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for Apache
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -165,5 +164,87 @@
         fi
     done
 done
+
 shtool_exit 1
 
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool path> - B<GNU shtool> command dealing with shell path variables
+
+=head1 SYNOPSIS
+
+B<shtool path>
+[B<-s>|B<--suppress>]
+[B<-r>|B<--reverse>]
+[B<-d>|B<--dirname>]
+[B<-b>|B<--basename>]
+[B<-m>|B<--magic>]
+[B<-p>|B<--path> I<path>]
+I<str> [I<str> ...]
+
+=head1 DESCRIPTION
+
+This command deals with shell C<$PATH> variables. It can find a program
+through one or more filenames given by one or more I<str> arguments.
+It prints the absolute filesystem path to the program displayed on
+C<stdout> plus an exit code of 0 if it was really found.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-s>, B<--suppress>
+
+Supress output. Useful to only test whether a program exists with the
+help of the return code.
+
+=item B<-r>, B<--reverse>
+
+Transform a forward path to a subdirectory into a reverse path.
+
+=item B<-d>, B<--dirname>
+
+Output the directory name of I<str>.
+
+=item B<-b>, B<--basename>
+
+Output the base name of I<str>.
+
+=item B<-m>, B<--magic>
+
+Enable advanced magic search for "C<perl>" and "C<cpp>".
+
+=item B<-p>, B<--path> I<path>
+
+Search in I<path>. Default is to search in $PATH.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ awk=`shtool path -p "${PATH}:." gawk nawk awk`
+ perl=`shtool path -m perl`
+ cpp=`shtool path -m cpp`
+ revpath=`shtool path -r path/to/subdir`
+
+=head1 HISTORY
+
+The B<GNU shtool> B<path> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1998 for B<Apache>. It was
+later taken over into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), which(1).
+
+=cut
+


ossp-pkg/shtool/sh.platform 1.4 -> 1.5

--- sh.platform  2004/01/21 20:40:51     1.4
+++ sh.platform  2004/02/12 16:06:27     1.5
@@ -1,7 +1,6 @@
 ##
 ##  platform -- Platform Identification Utility
 ##  Copyright (c) 2003-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for use in OpenPKG
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -20,7 +19,7 @@
 ##
 
 str_tool="platform"
-str_usage="[-F|--format FORMAT] [-S|--sep STRING] [-C|--conc STRING] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type TYPE] [-V|--version] [-h|--help]"
+str_usage="[-F|--format <format>] [-S|--sep <string>] [-C|--conc <string>] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type <type>] [-V|--version] [-h|--help]"
 arg_spec="0="
 opt_spec="F:S:C:L.U.v.c.n.t:d.V.h."
 opt_alias="F:format,S:sep,C:conc,L:lower,U:upper,v:verbose,c:consise,t:type,n:no-newline,V:version,h:help"
@@ -572,3 +571,257 @@
     echo "$output"
 fi
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool platform> - B<GNU shtool> Unix platform identification
+
+=head1 SYNOPSIS
+
+B<shtool platform>
+[B<-F>|B<--format> I<format>]
+[B<-S>|B<--sep> I<string>]
+[B<-C>|B<--conc> I<string>]
+[B<-L>|B<--lower>]
+[B<-U>|B<--upper>]
+[B<-v>|B<--verbose>]
+[B<-c>|B<--concise>]
+[B<-n>|B<--newline>]
+[B<-d>|B<--debug>]
+[B<-t>|B<--type> I<type>]
+[B<-n>|B<--newline>]
+[B<-d>|B<--debug>]
+
+=head1 DESCRIPTION
+
+B<shtool platform> is a flexible Unix platform identification program.
+It distinguishes a platform according to its I<hardware architecture>
+and I<operating system>. For both there is a I<class>, I<product> and
+I<technology> identification. For each of those six identifications,
+there is a I<verbose>, I<regular> and I<concise> version.
+
+This leads to eighteen (2x3x3) available identification strings for each
+platform, from which usually 2 are chosen in a particular situation.
+This is done by assembling the platform identification string using a
+I<format> string containing one or more identification constructs of the
+forms "C<%[xx]>" (verbose), "C<%{xx}>" (regular) and "C<%E<lt>xxE<gt>>"
+(concise).
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-F>, B<--format> I<format>
+
+This option controls the output formatting of this program. It is a
+plain-text string with the "C<%>I<xx>" constructs which expand to the
+various platform information strings. "C<%{>I<xx>C<}>" is the canonical
+regular version of the information. "C<%[>I<xx>C<]>" is the verbose
+version of the information. "C<%E<lt>>I<xx>C<E<gt>>" is the concise
+version of the information. In total, the following constructs
+are available for expansion:
+
+ %[ac]    verbose hardware architecture class
+ %{ac}    regular hardware architecture class
+ %<ac>    concise hardware architecture class
+
+ %[ap]    verbose hardware architecture product
+ %{ap}    regular hardware architecture product
+ %<ap>    concise hardware architecture product
+
+ %[at]    verbose hardware architecture technology
+ %{at}    regular hardware architecture technology
+ %<at>    concise hardware architecture technology
+
+ %[sc]    verbose operating system class
+ %{sc}    regular operating system class
+ %<sc>    concise operating system class
+
+ %[sp]    verbose operating system product
+ %{sp}    regular operating system product
+ %<sp>    concise operating system product
+
+ %[st]    verbose operating system technology
+ %{st}    regular operating system technology
+ %<st>    concise operating system technology
+
+The default I<format> string is "C<%{sp} (%{ap})>", providing the
+regular operating system and hardware architecture product information.
+
+=item B<-S>, B<--sep> I<string>
+
+This option sets the word I<separation> string for the platform
+information strings. By default it is "C< >" (whitespace). It is
+especially used for separating the operating system name and
+the operating system version.
+
+=item B<-C>, B<--conc> I<string>
+
+This option sets the word I<concatenation> string for the platform
+information strings. By default it is "C</>". It is especially used to
+concatenate multiple parts in operating system name and version parts.
+
+=item B<-L>, B<--lower>
+
+This options enforces conversion of the output to all I<lower> case.
+
+=item B<-U>, B<--upper>
+
+This options enforces conversion of the output to all I<upper> case.
+
+=item B<-v>, B<--verbose>
+
+This option enforces verbose versions of all expansion constructs
+in I<format> string of option B<-F>. It is equal to specifying all
+expansion constructs as "C<%[>I<xx>C<]>".
+
+=item B<-c>, B<--concise>
+
+This option enforces concise versions of all expansion constructs
+in I<format> string of option B<-F>. It is equal to specifying all
+expansion constructs as "C<%E<lt>>I<xx>C<E<gt>>".
+
+=item B<-n>, B<--no-newline>
+
+This option omits the usual trailing newline character in the output.
+
+=item B<-t>, B<--type> I<type>
+
+This option is a meta option which internally sets options B<-F>, B<-S>,
+B<-C>, B<-L>, B<-U>, B<-v> or B<-c> according to I<TYPE>. It can be used
+to easily specify various commonly known outputs. The following I<TYPE>s
+are available:
+
+=over 4
+
+=item B<binary>
+
+Binary Package Id (OpenPKG RPM).
+This is equal to "C<-F '%<ap>-%<sp>' -L -S '' -C '+'>"
+and results in outputs like "C<ix86-freebsd4.9>" and "C<ix86-debian3.0>".
+
+=item B<build>
+
+Build-Time Checking (OpenPKG RPM).
+This is equal to "C<-F '%<at>-%<st>' -L -S '' -C '+'>"
+and results in outputs like "C<i686-freebsd4.9>" and "C<i586-linux2.4>".
+
+=item B<gnu>
+
+GNU F<config.guess> Style Id.
+This is similar to B<build> and is equal to "C<-F '"%<at>-unknown-%<st>' -L -S '' -C '+'>"
+and results in outputs like "C<i686-unknown-freebsd4.9>" and "C<i586-unknown-linux2.4>".
+
+=item B<web>
+
+HTTP Server Header Id.
+This is equal to "C<-F '"%<sp>-%<ac>' -S '/' -C '+'>"
+and results in outputs like "C<FreeBSD/4.9-iX86>" and "C<Debian/3.0-iX86>".
+
+=item B<summary>
+
+Human Readable Verbose Summary Information. This is equal to "C<-F
+'Class: %[sc] (%[ac])\nProduct: %[sp] (%[ap])\nTechnology: %[st]
+(%[at])' -S ' ' -C '/'>" and results in outputs like:
+
+ Class:      4.4BSD (iX86)
+ Product:    FreeBSD 4.9-RC (iX86)
+ Technology: FreeBSD 4.9-RC (i686)
+
+and
+
+ Class:      LSB (iX86)
+ Product:    Debian GNU/Linux 3.0 (iX86)
+ Technology: GNU/Linux 2.2/2.4 (i686)
+
+=item B<all-in-one>
+
+All-In-One Full-Table Information. This just outputs really
+all 2x2x3 identification strings as a table.
+
+=back
+
+=item B<-d>, B<--debug>
+
+This option enables some internal debugging messages.
+
+=item B<-V>, B<--version>
+
+This option outputs the version information of B<shtool platform> only.
+
+=item B<-h>, B<--help>
+
+This option outputs the usage information of B<shtool platform> only.
+
+=back
+
+=head1 EXAMPLE
+
+The following real-life use cases are known:
+
+=over 4
+
+=item B<OpenPKG> build-time decisions
+
+ $ platform -c -L -S "" -C "+" -F "%at-%st"
+ $ platform -c -L -S "" -C "+" -F "%ac-%sc"
+
+=item B<OpenPKG> binary RPM packages
+
+ $ platform -c -L -S "" -C "+" -F "%ap-%sp"
+
+=item F<README> files
+
+ $ platform -v -F "%sp (%ap)"
+ $ platform -v -F "%sc (%ac)"
+
+=item Debugging
+
+ $ platform --type=all-in-one
+
+=back
+
+=head1 SUPPORT
+
+B<shtool platform> currently knows the following particular Unix platforms
+in detail: FreeBSD, NetBSD, OpenBSD, Linux, Sun Solaris, SCO UnixWare,
+QNX Neutrino, SGI IRIX, HP HP-UX, HP Tru64, IBM AIX and Apple MacOS X
+Darwin.
+
+All other Unix platforms are recognized through generic uname(1)
+information and so usually can be identified sufficiently, although the
+identification might be not as precise as possible.
+
+=head1 HISTORY
+
+B<shtool platform> was implemented in September 2003 by I<Ralf S.
+Engelschall> for use in the B<OSSP> and B<OpenPKG> projects. It was
+prompted by the need in B<OpenPKG> to have both product (for RPM
+filenames) and technology (for build-time decisions) identifiers for the
+Unix platforms, OpenPKG packages are maintained for. It was inspired by
+the B<GNU> F<config.guess> and the old B<GNU shtool> F<guessos> command.
+
+The major difference to B<GNU> F<config.guess> is that B<shtool platform>
+does not use a I<vendor> identification (cannot be determined most of
+the time and is not used at all in all projects I've ever seen) and
+is a lot more flexible (class, product and technology identifications
+combined with verbose, regular and concise outputs). The drawback of
+B<shtool platform> is that it (still) knows less particular platforms,
+although the generic platform identification is sufficient enough most
+of the time.
+
+=head1 SEE ALSO
+
+uname(3), GNU F<config.guess>.
+
+=cut
+


ossp-pkg/shtool/sh.prop 1.17 -> 1.18

--- sh.prop      2004/01/01 16:54:20     1.17
+++ sh.prop      2004/02/12 16:06:27     1.18
@@ -1,7 +1,6 @@
 ##
 ##  prop -- Display progress with a running propeller
 ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for mod_ssl
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -65,3 +64,59 @@
     ' "prefix=$opt_p"
 fi
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool prop> - B<GNU shtool> propeller processing indication
+
+=head1 SYNOPSIS
+
+B<shtool prop>
+[B<-p>|B<--prefix> I<str>]
+
+=head1 DESCRIPTION
+
+This command displays a processing indication though a running
+propeller. It is intended to be run at the end of a pipe ("C<|>")
+sequence where on C<stdin> logging/processing informations found. For
+every line on C<stdin> the propeller advances one step clock-wise.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-p>, B<--prefix> I<str>
+
+Set a particular prefix I<str> which is displayed in front of the
+propeller. The default is no prefix string.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ configure 2>&1 |\
+     tee logfile |\
+     shtool prop -p "Configuring sources"
+
+=head1 HISTORY
+
+The B<GNU shtool> B<prop> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1998 for B<mod_ssl>. It was
+later taken over into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1).
+
+=cut
+


ossp-pkg/shtool/sh.scpp 1.25 -> 1.26

--- sh.scpp      2004/01/01 16:54:20     1.25
+++ sh.scpp      2004/02/12 16:06:27     1.26
@@ -1,7 +1,6 @@
 ##
 ##  scpp -- Sharing C Pre-Processor
 ##  Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for GNU Pth
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -247,3 +246,157 @@
 rm -f $output
 rm -f $tmpfile $tmpfile.* >/dev/null 2>&1
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool scpp> - B<GNU shtool> C source file pre-processor
+
+=head1 SYNOPSIS
+
+B<shtool scpp>
+[B<-v>|B<--verbose>]
+[B<-p>|B<--preserve>]
+[B<-f>|B<--filter> I<filter>]
+[B<-o>|B<--output> I<ofile>]
+[B<-t>|B<--template> I<tfile>]
+[B<-M>|B<--mark> I<mark>]
+[B<-D>|B<--define> I<dname>]
+[B<-C>|B<--class> I<cname>]
+I<file> [I<file> ...]
+
+=head1 DESCRIPTION
+
+This command is an additional ANSI C source file pre-processor for sharing
+cpp(1) code segments, internal variables and internal functions. The intention
+for this comes from writing libraries in ANSI C. Here a common shared internal
+header file is usually used for sharing information between the library
+source files.
+
+The operation is to parse special constructs in I<file>s, generate a few
+things out of these constructs and insert them at position I<mark> in I<tfile>
+by writing the output to I<ofile>. Additionally the I<file>s are never touched
+or modified. Instead the constructs are removed later by the cpp(1) phase of
+the build process. The only prerequisite is that every I<file> has a
+``C<#include ">I<ofile>C<">'' at the top.
+
+This command provides the following features: First it avoids namespace
+pollution and reduces prototyping efforts for internal symbols by recognizing
+functions and variables which are defined with the storage class identifier
+``I<cname>''.  For instance if I<cname> is ``intern'', a function ``C<intern
+void *foobar(int quux)>'' in one of the I<file>s is translated into both a
+``C<#define foobar __foobar>'' and a ``C<extern void *foobar(int quux);>'' in
+I<ofile>. Additionally a global ``C<#define> I<cname> C</**/>'' is also
+created in I<ofile> to let the compiler silently ignore this additional
+storage class identifier.
+
+Second, the library source files usually want to share C<typedef>s,
+C<#define>s, etc.  over the source file boundaries. To achieve this one can
+either place this stuff manually into I<tfile> or use the second feature of
+B<scpp>: All code in I<file>s encapsulated with ``C<#if >I<dname> ...
+C<#endif>'' is automatically copied to I<ofile>. Additionally a global
+``C<#define> I<dname> C<0>'' is also created in I<ofile> to let the compiler
+silently skip this parts (because it was already found in the header).
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-p>, B<--preserve>
+
+Preserves I<ofile> independent of the generated ``#line'' lines. This is
+useful for Makefiles if the real contents of I<ofile> will not change,
+just line numbers. Default is to overwrite.
+
+=item B<-f>, B<--filter> I<filter>
+
+Apply one or more pre-processing sed(1) I<filter> commands (usually of
+type ``C<s/.../.../>'') to each input file before their input is parsed.
+This option can occur multiple times.
+
+=item B<-o>, B<--output> I<ofile>
+
+Output file name. Default is C<lib.h>.
+
+=item B<-t>, B<--template> I<tfile>
+
+Template file name. Default is C<lib.h.in>.
+
+=item B<-M>, B<--mark> I<mark>
+
+Mark to be replaced by generated constructs. Default is C<%%MARK%%>.
+
+=item B<-D>, B<--define> I<dname>
+
+FIXME. Default is C<cpp>.
+
+=item B<-C>, B<--class> I<cname>
+
+FIXME. Default is C<intern>.
+
+=back
+
+=head1 EXAMPLE
+
+ #   Makefile
+ SRCS=foo_bar.c foo_quux.c
+ foo_p.h: foo_p.h.in
+      shtool scpp -o foo_p.h -t foo_p.h.in \
+                  -M %%MARK%% -D cpp -C intern $(SRCS)
+
+ /* foo_p.h.in */
+ #ifndef FOO_P_H
+ #define FOO_P_H
+ %%MARK%%
+ #endif /* FOO_P_H */
+
+ /* foo_bar.c */
+ #include "foo_p.h"
+ #if cpp
+ #define OURS_INIT 4711
+ #endif
+ intern int ours;
+ static int myone = 0815;
+ intern int bar(void)
+ {
+     ours += myone;
+ }
+
+ /* foo_quux.c */
+ #include "foo_p.h"
+ int main(int argc, char *argv[])
+ {
+     int i;
+     ours = OURS_INIT
+     for (i = 0; i < 10; i++) {
+         bar();
+         printf("ours now %d\n", ours);
+     }
+     return 0;
+ }
+
+=head1 HISTORY
+
+The B<GNU shtool> B<scpp> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1999 for B<GNU shtool>.
+Its was prompted by the need to have a pre-processing facility
+in the B<GNU pth> project.
+
+=head1 SEE ALSO
+
+shtool(1), cpp(1).
+
+=cut
+


ossp-pkg/shtool/sh.slo 1.23 -> 1.24

--- sh.slo       2004/01/01 16:54:20     1.23
+++ sh.slo       2004/02/12 16:06:27     1.24
@@ -1,7 +1,6 @@
 ##
 ##  slo -- Separate linker options by library class
 ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for Apache
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -178,3 +177,88 @@
     echo "${opt_p}${var}=\"${val}\""
 done
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool slo> - B<GNU shtool> separate linker options by library class
+
+=head1 SYNOPSIS
+
+B<shtool slo>
+[B<-p>|B<--prefix> I<str>]
+--
+B<-L>I<dir>
+B<-l>I<lib>
+[B<-L>I<dir> B<-l>I<lib> ...]
+
+=head1 DESCRIPTION
+
+This command separates the linker options ``B<-L>'' and ``B<-l>'' by library
+class. It's argument line can actually be an arbitrary command line where those
+options are contained. B<slo> parses these two options only and ignores the
+remaining contents. The result is a trivial shell script on C<stdout> which
+defines six variables containing the ``B<-L>'' and ``B<-l>'' options sorted by
+class:
+
+``C<SLO_DIRS_OBJ>'' and ``C<SLO_LIBS_OBJ>'' contains the ``B<-L>'' and
+``B<-l>'' options of static libraries,  ``C<SLO_DIRS_PIC>'' and
+``C<SLO_LIBS_PIC>'' contains the ``B<-L>'' and ``B<-l>'' options of static
+libraries containing PIC ("Position Independent Code") and
+``C<SLO_DIRS_DSO>'' and ``C<SLO_LIBS_DSO>'' contains the ``B<-L>'' and
+``B<-l>'' options of shared libraries. The B<-p> option can be used to
+change the default variable prefix from "C<SLO_>" to I<str>.
+
+The intent of this separation is to provide a way between static and shared
+libraries which is important if one wants to link custom DSOs against
+libraries, because not all platforms all one to link these DSOs against shared
+libraries. So one first has to separate out the shared libraries and link the
+DSO only against the static libraries.  One can use this command also to just
+sort the options.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-p>, B<--prefix> I<str>
+
+    FIXME
+
+=item B<-L>I<dir>
+
+Directory where libraries are searched in.
+
+=item B<-l>I<lib>
+
+Library to search for.
+
+=back
+
+=head1 EXAMPLE
+
+ #   configure.in
+ LINK_STD="$LDFLAGS $LIBS"
+ eval `shtool slo $LINK_STD`
+ LINK_DSO="$SLO_DIRS_OBJ $SLO_LIBS_OBJ $SLO_DIRS_PIC $SLO_LIBS_PIC"
+   :
+
+=head1 HISTORY
+
+The B<GNU shtool> B<slo> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1998 for B<Apache>.
+It was later taken over into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), ld(1).
+
+=cut
+


ossp-pkg/shtool/sh.subst 1.10 -> 1.11

--- sh.subst     2004/01/01 16:54:20     1.10
+++ sh.subst     2004/02/12 16:06:27     1.11
@@ -1,7 +1,6 @@
 ##
 ##  subst -- Apply sed(1) substitution operations
 ##  Copyright (c) 2001-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for OpenPKG's rpmtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -55,7 +54,7 @@
     OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS"
     for e
     do
-        sedcmd="$sedcmd -e '$e'" 
+        sedcmd="$sedcmd -e '$e'"
     done
 elif [ ".$opt_f" != . ]; then
     if [ ! -f $opt_f ]; then
@@ -166,3 +165,101 @@
     fi
 fi
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool subst> - B<GNU shtool> sed(1) substitution operations
+
+=head1 SYNOPSIS
+
+B<shtool subst>
+[B<-v>|B<--verbose>]
+[B<-t>|B<--trace>]
+[B<-n>|B<--nop>]
+[B<-s>|B<--stealth>]
+[B<-i>|B<--interactive>]
+[B<-b>|B<--backup> I<ext>]
+[B<-e>|B<--exec> I<cmd>]
+[B<-f>|B<--file> I<cmd-file>]
+[I<file>] [I<file> ...]
+
+=head1 DESCRIPTION
+
+This command applies one or more sed(1) substitution operations to
+F<stdin> or any number of files.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=item B<-n>, B<--nop>
+
+No operation mode. Actual execution of the essential shell commands
+which would be executed is suppressed.
+
+=item B<-s>, B<--stealth>
+
+Stealth operation. Preserve timestamp on I<file>.
+
+=item B<-i>, B<--interactive>
+
+Enter interactive mode where the user has to approve each operation.
+
+=item B<-b>, B<--backup> I<ext>
+
+Preserve backup of original file using file name extension I<ext>      .
+Default is to overwrite the original file                              .
+
+=item B<-e>, B<--exec> I<cmd>
+
+Specify sed(1) command directly.
+
+=item B<-f>, B<--file> I<cmd-file>
+
+Read sed(1) command from I<file>.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool subst -i -e 's;(c) \([0-9]*\)-2000;(c) \1-2001;' *.[ch]
+
+ #    RPM spec-file
+ %install
+     shtool subst -v -n \
+         -e 's;^\(prefix=\).*;\1 $RPM_BUILD_ROOT%{_prefix};g' \
+         -e 's;^\(sysconfdir=\).*;\1 $RPM_BUILD_ROOT%{_prefix}/etc;g' \
+         `find . -name Makefile -print`
+     make install
+
+=head1 HISTORY
+
+The B<GNU shtool> B<subst> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 2001 for B<GNU shtool>.
+It was prompted by the need to have a uniform and convinient patching
+frontend to sed(1) operations in the B<OpenPKG> package specifications.
+
+=head1 SEE ALSO
+
+shtool(1), sed(1).
+
+=cut
+


ossp-pkg/shtool/sh.table 1.19 -> 1.20

--- sh.table     2004/01/01 16:54:20     1.19
+++ sh.table     2004/02/12 16:06:27     1.20
@@ -1,7 +1,6 @@
 ##
 ##  table -- Pretty-print a field-separated list as a table
 ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for Apache
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -87,3 +86,68 @@
 }"
 IFS="$OIFS"
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool table> - B<GNU shtool> pretty-print a field-separated list
+
+=head1 SYNOPSIS
+
+B<shtool table>
+[B<-F>|B<--field-sep> I<sep>]
+[B<-w>|B<--width> I<width>]
+[B<-c>|B<--columns> I<cols>]
+[B<-s>|B<--strip> I<strip>]
+I<str>B<sep>I<str>...
+
+=head1 DESCRIPTION
+
+This pretty-prints a list of strings as a table.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-F>, B<--field-sep> I<sep>
+
+Separate columns using I<sep>. Default is C<:>.
+
+=item B<-w>, B<--width> I<width>
+
+Width of each column. Default is 15 characters.
+
+=item B<-c>, B<--columns> I<cols>
+
+Number of columns. Default is C<3>.
+
+=item B<-s>, B<--strip> I<strip>
+
+Strip off any characters past I<strip>. Default is C<79>.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool table -F , -w 5 -c 4 "1,2,3,4,5,6,7,8,9,10,11,12"
+
+=head1 HISTORY
+
+The B<GNU shtool> B<table> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1999 for B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), tr(1), fmt(1), sh(1), awk(1), sed(1).
+
+=cut
+


ossp-pkg/shtool/sh.tarball 1.20 -> 1.21

--- sh.tarball   2004/01/01 16:54:20     1.20
+++ sh.tarball   2004/02/12 16:06:27     1.21
@@ -1,7 +1,6 @@
 ##
 ##  tarball -- Roll distribution tarballs
 ##  Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for shtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -191,3 +190,96 @@
 fi
 rm -f $tmpfile.lst $tmpfile.out
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool tarball> - B<GNU shtool> command for rolling standardized tarballs
+
+=head1 SYNOPSIS
+
+B<shtool tarball>
+[B<-t>|B<--trace>]
+[B<-v>|B<--verbose>]
+[B<-o>|B<--output> I<tarball>]
+[B<-c>|B<--compress> I<prog>]
+[B<-u>|B<--user> I<user>]
+[B<-g>|B<--group> I<group>]
+[B<-e>|B<--exclude> I<pattern>]
+I<path> [I<path> ...]
+
+=head1 DESCRIPTION
+
+This command is for rolling input files under I<path> into a
+distribution tarballs which can be extracted by tar(1).
+
+The four important aspects of good open source software tarballs are:
+(1) unpack into a single top-level directory, (2) top-level directory
+corresponds to the tarball filename, (3) tarball should be sorted and
+(4) arbitrary names for file owner and group.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Display some processing information.
+
+=item B<-t>, B<--trace>
+
+Enable the output of the essential shell commands which are executed.
+
+=item B<-o>, B<--output> I<tarball>
+
+Output tarball to file I<tarball>.
+
+=item B<-c>, B<--compress> I<prog>
+
+Pipe resulting tarball through compression program I<prog>.
+
+=item B<-u>, B<--user> I<user>
+
+The user (owner) of files and directories in the tarball to I<user>.
+
+=item B<-g>, B<--group> I<group>
+
+The group of files and directories in the tarball to I<group>.
+
+=item B<-e>, B<--exclude> I<pattern>
+
+Exclude files and directories matching comma-separated list of
+regex I<pattern> from the tarball. Directories are expanded
+before the filtering takes place. The default filter pattern is
+"C<CVS,\\.cvsignore,\\.[oa]\$>".
+
+=back
+
+=head1 EXAMPLE
+
+ #   Makefile.in
+ dist:
+     ...
+     V=`shtool version -d short ...`; \
+     shtool tarball -o foobar-$$V.tar.gz -c 'gzip -9' \
+                    -u bar -g gnu -e 'CVS,\.cvsignore' .
+
+=head1 HISTORY
+
+The B<GNU shtool> B<tarball> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1999 for B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1), tar(1), compress(1).
+
+=cut
+


ossp-pkg/shtool/sh.version 1.35 -> 1.36

--- sh.version   2004/01/01 16:54:20     1.35
+++ sh.version   2004/02/12 16:06:27     1.36
@@ -1,7 +1,6 @@
 ##
 ##  version -- Maintain a version information file
 ##  Copyright (c) 1994-2004 Ralf S. Engelschall <rse@engelschall.com>
-##  Originally written for ePerl, rewritten from scratch for shtool
 ##
 ##  This file is part of shtool and free software; you can redistribute
 ##  it and/or modify it under the terms of the GNU General Public
@@ -304,3 +303,109 @@
     esac
 fi
 
+shtool_exit 0
+
+##
+##  manual page
+##
+
+=pod
+
+=head1 NAME
+
+B<shtool version> - B<GNU shtool> maintain version information file
+
+=head1 SYNOPSIS
+
+B<shtool version>
+[B<-l>|B<--language> I<lang>]
+[B<-n>|B<--name> I<name>]
+[B<-p>|B<--prefix> I<prefix>]
+[B<-s>|B<--set> I<version>]
+[B<-e>|B<--edit>]
+[B<-i>|B<--increase> I<knob>]
+[B<-d>|B<--display> I<type>]
+I<file>
+
+=head1 DESCRIPTION
+
+This command displays and maintains version information in I<file>.
+
+The version is always described with a triple
+E<lt>I<version>,I<revision>,I<level>E<gt> and is represented
+by a string which always matches the regular expression
+"C<[0-9]+\.[0-9]+[sabp.][0-9]+>".
+
+The hexadecimal format for a version C<v.rtl> is C<VVRRTLL> where C<VV>
+and C<RR> directly correspond to C<v> and C<r>, C<T> encodes the level
+type as C<9>, C<2>, C<1>, C<0> (representing C<s>, C<p>/C<.>, C<b>, C<a>
+in this order) and C<LL> is either directly corresponding to C<l> or set
+to C<99> if level type is C<s>.
+
+=head1 OPTIONS
+
+The following command line options are available.
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Print verbose information during processing.
+
+=item B<-l>, B<--language> I<lang>
+
+Choose format of version file I<file>. I<lang>="C<txt>", ANSI C
+(I<lang>="c"), Perl (I<lang>="perl") or Python (I<lang>="python").
+Default is C<txt>.
+
+=item B<-n>, B<--name> I<name>
+
+Name the program the version is maintained for. Default is C<unknown>.
+
+=item B<-p>, B<--prefix> I<prefix>
+=item B<-s>, B<--set> I<version>
+
+Set the version to I<version>.
+
+=item B<-e>, B<--edit>
+
+Interactively enter a new version.
+
+=item B<-i>, B<--increase> I<knob>
+
+When option ``B<-i>'' is used, the current version in I<file> is updated
+by increasing one element of the version where I<knob> can be one of
+the following: ``C<v>'' for increasing the version by 1 (and resetting
+revision and level to 0), ``C<r>'' for increasing the revision by 1 (and
+resetting level to 0) or ``C<l>'' for increasing the level by 1.
+
+=item B<-d>, B<--display> I<type>
+
+Control the display type: "C<short>" for a short version display,
+"C<long>" for a longer version display, "C<hex>" for a hexadecimal
+display of the version and "C<libtool>" for a format suitable for use
+with GNU libtool.
+
+=back
+
+=head1 EXAMPLE
+
+ #   shell script
+ shtool version -l c -n FooBar -p foobar -s 1.2b3 version.c
+
+ #   configure.in
+ V=`shtool version -l c -d long version.c`
+ echo "Configuring FooBar, Version $V"
+
+=head1 HISTORY
+
+The B<GNU shtool> B<version> command was originally written by Ralf S.
+Engelschall E<lt>rse@engelschall.comE<gt> in 1994 for B<OSSP eperl>. It
+was later rewritten from scratch for inclusion into B<GNU shtool>.
+
+=head1 SEE ALSO
+
+shtool(1).
+
+=cut
+


ossp-pkg/shtool/shtool.pod 1.65 -> 1.66

--- shtool.pod   2004/01/01 16:54:20     1.65
+++ shtool.pod   2004/02/12 16:06:27     1.66
@@ -45,128 +45,6 @@
 There it can take over various (usually non-portable) tasks related to the
 building and installation of such packages.
 
-=head2 Context Background
-
-For the configuration, build and installation environment of modern free
-software packages one nowadays uses GNU B<autoconf> and friends (i.e.
-usually B<autoconf>, B<automake> and B<libtool>). B<Autoconf> covers the
-configuration, B<automake> covers the generation of the build environment and
-B<libtool> covers most of a libraries build process. But at least when it
-comes to the installation step one usually have to use a few auxiliary scripts
-like C<mkdir.sh>, C<install.sh>, etc. These scripts are usually replacements
-for system tools and are required mainly for portability reasons. The result
-is usually an C<etc/> subdirectory in the source tree where over time a
-lot shell scripts accumulate.
-
-=head2 Maintainance Problem
-
-The problem with those C<etc/> shell scripts starts if one has to maintain
-I<lots> of free software packages as it's the case for the author of B<shtool>.
-Then over time all C<etc/> directories diverge and with every day it gets more
-and more nasty to always keep them in sync. Especially if some scripts
-were locally adjusted because no centralized maintainance location exists, of
-course. For B<autoconf> no such problem exists, because the resulting
-C<configure> script is generated on-the-fly. The same applies to B<automake>
-and the various C<Makefile.in> files.
-
-Only for B<libtool> one always has to grab the latest copy. But because it's
-just two files (C<ltmain.sh> and C<ltconfig>), keeping a source trees in sync
-is not too complicated (especially not if using the handy C<libtoolize>
-program). But the C<etc/> shell script mess is nasty, especially because there
-is no master version on the net. Additionally everytime one starts a new
-project, one has to establish a new source tree. For a GNU hacker it's
-immediately clear that B<autoconf> and friends are part of the game. But which
-C<etc/> shell scripts are needed this time? And from which existing source
-tree to copy them from? Hmmm... the same procedure as last year?!
-
-=head2 The Aesthetic Problem
-
-When a free software package has a large source tree (say, more than 50 files
-and especially with one or more subdirectories) it's usually no problem to
-have an additional C<etc/> subdirectory with some scripts. They then totally
-go down. But for smaller packages, especially those living in a single source
-directory (a degenerated tree), some people (like the author of B<shtool>)
-have aesthetic problems. Because it looks strange to them that 20% of the
-files in the source tree are just auxiliary scripts. Sure, the actual amount
-of script code even B<shtool> cannot reduce, but B<shtool> merges them
-together into a single file and this way they optically totally disappear from
-the source tree.
-
-This is a pure aesthetical issue, of course. But keep in mind that hacking is
-a piece of art. And a well layouted source tree is a piece of art for real
-hackers, too.  Oh, and for those who really insist on a technical reason: it's
-also easier to upgrade a single file than multiple files ;)
-
-=head2 Filling the gap
-
-So, wouldn't it be nice to have a fourth package (beside B<autoconf>,
-B<automake> and B<libtool>) which fills the gap, i.e. which provides the
-functionality of the old files in C<etc/>, is maintained at a centralized
-location and even consists of just a single (perhaps large) script one can
-threat as a black box the same way one already does this for B<libtool>?  The
-author thought this I<would> be actually very useful and the result is the
-current GNU B<shtool> package which at least successfully solved the above
-problems of the author.
-
-=head2 The goals in detail
-
-To better understand the intentions behind B<shtool> and to avoid confusion,
-here are the original goals of the B<shtool> script:
-
-=over 3
-
-=item B<1. It has to be self-contained and reside in a single file>
-
-This was achieved by compiling the resulting B<shtool> script out of the
-ingredient source scripts. The advantage is that B<shtool> is still easily
-maintainable, because one can test each script separately. But the final
-functionality then resides in an all-in-one script which can be easily spread
-over multiple source trees.
-
-=item B<2. It has to cover all functionality of the old scripts>
-
-This was achieved by (re)implementing really all functionality which
-experience showed is important in source trees of typical free software
-packages.
-
-=item B<3. It has to be maximum portable over all Unix flavors>
-
-This was achieved by basing the ingredient shell scripts only on well-proven
-code which already survived practice in other projects over more than a few
-months. Especially this means that a lot of complicated emulations are done to
-avoid the use of unportable Unix programs (like C<fmt>, C<tr>, etc) or
-unportable features of well-known Unix programs (like shell functions, special
-C<sed> features, etc. pp).  That's why B<shtool>'s code sometimes looks crazy
-and like overkill to you. Don't think this is because of the authors
-crazyness. Instead it's most of the time mainly for portability reasons.
-
-=item B<4. It has to be clean and fully documented>
-
-This was achieved by reimplementing too ugly functionality from scratch and
-cleaning up old shell script code plus writing this complete manual page.
-
-=item B<5. It has to stay under a reasonable and common license>
-
-This was achieved by placing the B<shtool> package under the GNU General
-Public License (GPL).  This way the B<shtool> package itself is well protected
-and is guarrantied to be kept free software, but the resulting B<shtool>
-script can be nevertheless I<used> in I<all> types of source trees.  Notice
-here: given that one includes GNU B<shtool> verbatim into an own source tree,
-one is justified in saying that it remains separate from the own package, and
-that this way one is simply just I<using> B<shtool>.  So, in this situation,
-there is no requirement that the package itself is licensed under the GNU
-General Public License in order to take advantage of B<shtool>. Keep this in
-mind ;)
-
-=item B<6. It has to be modularized for flexibility reasons>
-
-This was achieved by using an auxiliary tool shtoolize(1) which can be used to
-build individual C<shtool> scripts out of the ingredient shell scripts. This
-way if one don't need all the available functionality one can assemble
-together an individual C<shtool> script.
-
-=back
-
 =head1 GLOBAL OPTIONS
 
 The following I<global options> are available for B<shtool>. Any I<command>s
@@ -195,12 +73,14 @@
 
 =head1 COMMANDS
 
-The following I<command>s are provided by B<shtool>. They are all called via
-``C<shtool> I<command>''. Any trailing I<command_options> are specific to the
-particular I<command>. They are listed (here and also below) sorted by topic,
-i.e. related commands are listed side-by-side.
+The following I<command>s are provided by B<shtool>. They are all called
+via "C<shtool> I<command>". Any command options I<command_opts> and
+arguments I<command_args> are specific to the particular I<command> and
+are described in the corresponding manual page B<shtool_>I<command>(1).
+The commands are listed here sorted by topic, i.e., related commands are
+listed side-by-side.
 
-=over 12
+=over 16
 
 =item B<echo>
 
@@ -209,30 +89,32 @@
 
 =item B<mdate>
 
-Pretty-prints the last modification time of a file or directory.
+Pretty-printing of the last modification time of a file or directory.
 
 =item B<table>
 
-Pretty-prints a field-separately list as a table.
+Pretty-printing a field-separated list as a two-dimensional table.
 
 =item B<prop>
 
-Display a processing indication though a running propeller.
+Displaying of a processing indication though a running terminal
+character propeller.
 
 =item B<move>
 
-mv(1) style command, but can rename/move multiple files at once and allows
-source files just to be deleted if contents didn't change.
+mv(1) style command for renaming/moving multiple files at once and
+allowing source files just to be deleted if contents did not change.
 
 =item B<install>
 
-Install a program, script or datafile in a portable way.
+install(1) style command for installing a program, script or data file
+in a portable way.
 
 =item B<mkdir>
 
-mkdir(1) style command providing support for auto-parent-dir creation,
-directory permission control and smart skipping if directory already
-exists.
+mkdir(1) style command providing support for automatical parent
+directory creation, directory permission control and smart skipping if
+directory already exists.
 
 =item B<mkln>
 
@@ -241,11 +123,12 @@
 
 =item B<mkshadow>
 
-Create a shadow source tree by the help of symbolic links.
+Creation of a shadow filesystem tree by the help of symbolic links.
 
 =item B<fixperm>
 
-Fix file permissions inside a source tree by cleaning up the permission bits.
+Fixing of file permissions in a source tree by cleaning up the
+permission bits.
 
 =item B<rotate>
 
@@ -287,722 +170,6 @@
 
 =back
 
-=head1 COMMAND DESCRIPTION
-
-In the following the available I<commands> and their corresponding
-I<command_options> are described in detail.
-
-=over 4
-
-=item B<echo> [B<-n>|B<--newline>] [B<-e>|B<--expand>] I<str>
-
-This is an echo(1) style print command which provides special expansion
-constructs (terminal bold mode, environment details, date) and newline
-control.  Per default I<string> is written to I<stdout> followed by a newline
-character (``C<\n>''). When option ``B<-n>'' is used this newline character is
-left out.
-
-The I<str> can contain special ``B<%>I<x>'' constructs which which
-are expanded before the output is written if option ``B<-e>'' is
-used. Currently the following constructs are recognized: ``B<%B>''
-for switching to terminal bold mode, ``B<%b>'' for switching terminal
-mode back to normal display mode, ``B<%u>'' for the current user name,
-``B<%U>'' for the current user id (numerical), ``B<%g>'' for the current
-group name, ``B<%G>'' for the current group id (numerical), ``B<%h>''
-for the current hostname, ``B<%d>'' for the current domain name,
-``B<%D>'' for the current day of the month, ``B<%M>'' for the current
-month (numerical), ``B<%m>'' for the current month name and ``B<%Y>''
-for the current year.
-
-The trick of this command is that it provides a portable ``B<-n>'' option and
-hides the gory details needed to find out the environment details.
-
-Examples:
-
- #   shell script
- shtool echo -n -e "Enter your name [%B%u%b]: "; read name
- shtool echo -e "Your Email address might be %u@%h%d"
- shtool echo -e "The current date is %D-%m-%Y"
-
-=item B<mdate> [B<-n>|B<--newline>] [B<-z>|B<--zero>] [B<-s>|B<--shorten>] [B<-d>|B<--digits>] [B<-f>|B<--field-sep> I<str>] [B<-o>|B<--order> I<spec>] I<path>
-
-This command pretty-prints the last modification time of a file or directory
-I<path>. Option ``B<-n>'' suppresses the output of a trailing newline
-character, option ``B<-z>'' pads numeric day (and optionally month) with a
-leading zero, option ``B<-s>'' shortens the months name to an abbreviation of
-three characters, option ``B<-d>'' replaces the month name with the
-corresponding digits, option ``B<-f>'' uses I<str> as the field separator
-(default is a single space character) and option ``B<-o>'' specified the order
-in which the fields are printed.
-
-The default for I<spec> is ``C<dmy>'' which means an output of ``<day> <month>
-<year>''.  Any combination of the chars ``C<d>'', ``C<m>'' and ``C<y>'' or
-allowed for I<spec>.
-
-The trick of this command is that it provides a portable way to find out the
-date of a file or directory while still allowing one to specify the format of
-the date display.
-
-Examples:
-
- #   shell script
- shtool mdate -n /
- shtool mdate -f '/' -z -d -o ymd foo.txt
- shtool mdate -f '-' -s foo.txt
-
-=item B<table> [B<-F>|B<--field-sep> I<sep>] [B<-w>|B<--width> I<width>] [B<-c>|B<--columns> I<cols>] [B<-s>|B<--strip> I<strip>] I<str>B<sep>I<str>...
-
-This pretty-prints a I<sep>-separated list of I<str>ings as a table.  Per
-default a colon-separated list (I<sep>=":") is pretty printed as a
-three-column (<cols>=3) table no longer than 79 chars (I<strip>=79) is
-generated where each column is 15 characters wide (I<width>=15).
-
-The trick of this command is that it avoids to use the unportable tr(1) and
-fmt(1) commands and instead is based entirely on sh(1), awk(1) and sed(1)
-functionality.
-
-Example:
-
- #   shell script
- shtool table -F , -w 5 -c 4 "1,2,3,4,5,6,7,8,9,10,11,12"
-
-=item B<prop> [B<-p>|B<--prefix> I<str>]
-
-This command displays a processing indication though a running propeller. The
-option ``B<-p>'' can be used to set a particular prefix I<str> which is
-displayed in front of the propeller. The default is no prefix string, i.e. the
-propeller is at the left border of the terminal.  This command is intended to
-be run at the end of a pipe (``C<|>'') sequence where on C<stdin>
-logging/processing informations found.  For every line on C<stdin> the
-propeller cycles one step clock-wise.
-
-The trick of this command is that it provides a portable and easy to use way
-to display such nice and psychologically important process indicators.
-
-Example:
-
- #   shell script
- configure 2>&1 |\
-     tee logfile |\
-     shtool prop -p "Configuring sources"
-
-=item B<move> [B<-v>|B<--verbose>] [B<-t>|B<--trace>] [B<-e>|B<--expand>] [B<-p>|B<--preserve>] I<src-file> I<dst-file>
-
-This is a mv(1) style command, but with two special features: First if
-option ``B<-e>'' (`expand') is used and an asterisk occurs somewhere in I<src>
-one can use ``C<%>I<n>'' (where I<n> is C<1>,C<2>,...) in I<dst-file>. This is
-useful for renaming multiple files at once.  Second, if option ``B<-p>''
-(for `preserve') is used and I<src-file> and I<dst-file> are byte-wise the
-same it just deletes I<src-file>. The intention is that the permissions and
-time stamps on I<dst> aren't changed which is important if I<dst-file> is
-used in conjunction with Makefiles.  Option ``B<-v>'' (verbose) can be used to
-enable the output of extra processing information. Option ``B<-t>'' (trace)
-can be used to enable the output of the essential shell commands which are
-executed.
-
-The trick of this command is that it can rename multiple files at once and
-preserves the timestamps if the contents isn't changed.
-
-Examples:
-
- #   shell script
- shtool move -v -e '*.txt' %1.asc
-
- #   Makefile
- scanner.c: scanner.l
-     lex scanner.l
-     shtool move -t -p lex.yy.c scanner.c
-
-=item B<install> [B<-v>|B<--verbose>] [B<-t>|B<--trace>] [B<-c>|B<--copy>] [B<-C>|B<--compare-copy>] [B<-s>|B<--strip>] [B<-m>|B<--mode> I<mode>] [B<-o>|B<--owner> I<owner>] [B<-g>|B<--group> I<group>] [B<-e>|B<--exec> I<sed-cmd>] [B<-d>|B<--mkdir>] I<file> I<path>
-
-This command installs a program, script or datafile (dependent on I<mode>) in
-a portable way while providing all important options of the BSD install(1)
-command. Per default I<file> is moved to the target I<path>, but with option
-``B<-c>'' I<file> is copied. The target file is created with owner/group set
-to the current active uid/gid, but if this script is called as root (uid 0)
-the options ``B<-o>'' and ``B<-g>'' can be used to override this.
-
-Additionally program executables is stripped with strip(1) after
-installation if option ``B<-s>'' is used. Option ``B<-C>'' is like
-``B<-c>'', except if the destination file already exists and is the
-same as the source file, no file is copied at all. Option ``B<-e>''
-can be used one or multiple times to apply one or more sed(1) commands
-on-the-fly to the contents of the input I<file> before the output file
-is created. Option ``B<-v>'' (verbose) can be used to enable the output
-of extra processing information. Option ``B<-t>'' (trace) can be used to
-enable the output of the essential shell commands which are executed.
-
-The trick of this command is that it provides the functionality of BSD
-install(1) in a portable emulated way. For even more compatibility,
-the BSD "B<shtool> C<install -d>" usage is internally mapped to the
-"B<shtool> C<mkdir -f -p -m 755>" command.
-
-Example:
-
- #   Makefile
- install:
-      :
-     shtool install -c -s -m 4755 foo $(bindir)/
-     shtool install -c -m 644 foo.man $(mandir)/man1/foo.1
-     shtool install -c -m 644 -e "s/@p@/$prefix/g" foo.conf $(etcdir)/
-
-=item B<mkdir> [B<-t>|B<--trace>] [B<-f>|B<--force>] [B<-p>|B<--parents>] [B<-m>|B<--mode> I<mode>] [B<-o>|B<--owner> I<owner>] [B<-g>|B<--group> I<group>] I<dir> [I<dir> ...]
-
-This is a mkdir(1) style command providing support for automatic parent
-directory creation (if option ``B<-p>'' is used), directory permission
-control (with option ``B<-m> I<mode>'' where I<mode> can be in any of
-the formats specified to the chmod(1) command) and smart skipping if
-I<dir> already exists (triggered by the force option ``B<-f>''). Option
-``B<-t>'' (trace) can be used to enable the output of the essential
-shell commands which are executed. The target directory is created with
-owner/group set to the current active uid/gid, but if this script is
-called as root (uid 0) the options ``B<-o>'' and ``B<-g>'' can be used
-to override this.
-
-The trick of this command is that it provides both a portable ``B<-p>''
-functionality and the ability to be smart if the directory already exists
-which is important for installation procedures.
-
-Example:
-
- #   Makefile
- install:
-     shtool mkdir -f -p -m 755 $(bindir)
-     shtool mkdir -f -p -m 755 $(mandir)/man1
-      :
-
-=item B<mkln> [B<-t>|B<--trace>] [B<-f>|B<--force>] [B<-s>|B<--symbolic>] I<src-path> [I<src-path> ...] I<dst-path>
-
-This is a ln(1) style command which provides automatic calculation and usage
-of relative links if possible, i.e. usually if I<src-path> and I<dst-path>
-are not absolute paths or at least they share a common prefix except the root
-directory (``C</>''). When more than one I<src-path> is specified, all of them
-are linked into I<dst-path>. Options ``B<-f>'' and ``B<-s>'' are similar to
-ln(1), i.e.  they force the creation of the link (even if it exists) and
-create a symbolic link instead of a hard-link.  Option ``B<-t>'' (trace) can
-be used to enable the output of the essential ``C<ln>'' command which is
-executed.
-
-The trick of this command is that it tried hard to calculate the paths to get
-the maximum possible relative paths.
-
-Example:
-
- #   shell script
- shtool mkln -s foo/bar baz/quux
-
-=item B<mkshadow> [B<-v>|B<--verbose>] [B<-t>|B<--trace>] [B<-a>|B<--all>] I<src-dir> I<dst-dir>
-
-This command creates a shadow tree of I<src-dir> under I<dst-dir> by
-recreating the directory hierarchy of I<src-dir> under I<dst-dir> and by
-creating the files of I<src-dir> by linking them into the corresponding
-directories under I<dst-dir> via symbolic links. When I<src-dir> can be
-reached via relative paths from I<dst-dir>, relative symbolic links are used,
-too.
-
-Option ``B<-v>'' (verbose) can be used to enable some displaying of processing
-information.  Option ``B<-t>'' (trace) can be used to display all commands
-which are executed in order to construct I<dst-dir>.  Option ``B<-a>'' (all)
-can be used to really shadow all files and directories in I<src-dir>. Per
-default CVS related files and directories, backup files, object files, etc.
-are not shadowed.
-
-The trick of this is that is provides such a high-level functionality with a
-single command and hides all gory details.
-
-Example:
-
- #   shell script
- shtool mkshadow -v -a . /tmp/shadow
-
-=item B<fixperm> [B<-v>|B<--verbose>] [B<-t>|B<--trace>] I<path> [ I<path> ... ]
-
-This command fixes file permissions inside a source tree under I<path> by
-cleaning up the permission bits. It determines the cleaned up permission from
-the already set bits. It's intended to be run before a tarball is rolled out
-of the source tree. Option ``B<-v>'' can be used to display some processing
-information.  Option ``B<-t>'' (trace) can be used to enable the output of the
-essential shell commands which are executed.
-
-The trick is that this is more convenient that having to set the permissions
-manually or with a large file list.
-
-Example:
-
-  #   Makefile.in
-  dist:
-      shtool fixperm -v *
-      ...
-
-=item B<rotate> [B<-v>|B<--verbose>] [B<-t>|B<--trace>] [B<-f>|B<--force>] [B<-n>|B<--num-files> I<count>] [B<-s>|B<--size> I<size>] [B<-c>|B<--copy>] [B<-r>|B<--remove>] [B<-a>|B<--archive-dir> I<dir>] [B<-z>|B<--compress> [I<tool>:]I<level>] [B<-b>|B<--background>] [B<-d>|B<--delay>] [B<-p>|B<--pad> I<len>] [B<-o>|B<--owner> I<owner>] [B<-g>|B<--group> I<group>] [B<-m>|B<--mode> I<mode>] [B<-M>|B<--migrate> I<cmd>] [B<-P>|B<--prolog> I<cmd>] [B<-E>|B<--epilog> I<cmd>] I<file> [...]
-
-This command rotates a logfile I<file> by subsequently creating up to
-I<count> (optionally compressed) archive files of it. Archive files are
-named "I<file>.I<number>[I<compress-suffix]>" where I<number> is the
-version number, 0 being the newest and "I<count>-1" the oldest.
-
-A rotation step consists of the following steps: 1. remove archive file
-number I<count>-1; 2. move archive file number I<N>-1 to I<N> for I<N>
-counting from 1 to I<count>-1; 3. move I<file> to archive file number 0;
-4. creating a new and empty instance of I<file>.
-
-Option ``B<-s>'' can be used to only start a rotation step if I<file> is
-at least I<size> bytes long. The argument I<size> can be specified also
-with the trailing units C<K> (kilo), C<M> (mega) or C<G> (giga).
-
-Option ``B<-c>'' changes the approach of moving I<file> to archive file
-number 0: instead of a move followed by the creation of a new I<file>, a
-copy is performed followed by a truncation of I<file>. The difference is
-that in the first case (the default), if an application has I<file>
-still opened, after the rotation step it will have archive file number
-0 opened and usually has to reopen the new I<file>, while in the second
-case the application can keep its open file handles to I<file>. The
-drawback of the second approach is that logfile entries are lost when
-they are written to I<file> between the execution of the copy and the
-subsequent truncation operation.
-
-Option ``B<-r>'' removes I<file> after rotation instead of providing a
-new empty file. Option ``B<-a>'' forces archive files to be created in
-the separate directory I<dir>.
-
-Option ``B<-z>'' enables compression of archive files with compression
-level I<level> (if option ``B<-b>'' is present, compression takes place in
-background). By default, the tools bzip2(1), gzip(1) and compress(1) are
-searched for in C<$PATH> (in this order), but one also can override this
-by prefixing the compression level with one of the three particular tool
-names. Option ``B<-d>'' delays the compression of archive file number 0.
-This is useful if option ``B<-c>'' is not used, because an application
-might still write to archive file 0 (through an open file handle).
-
-Option ``B<-p>'' enables padding with leading zeros in the I<number>
-part of the filename "I<file>.I<number>I<compress-suffix>". The default
-padding I<len> is 1. This is interesting if more than 10 archive files
-are used, because it leads to still sorted directory listings.
-
-Options ``B<-o>'', ``B<-g>'' and ``B<-m>'' can be used to make sure that
-the created files have particular file attributes. The valid arguments
-are the same as for chown(1), chgrp(1) and chmod(1). Be aware that using
-options ``B<-o>'' and ``B<-g>'' require root privileges.
-
-Option ``B<-M>'' allows one to execute a "migration" command just before
-the archive file number I<count>-1 is removed from the filesystem. The
-specified I<cmd> gets the archive filename as an argument appended.
-Options ``B<-P>'' (prolog) and ``B<-E>'' (epilog) can be used to execute
-commands before and after the rotation step. They are interesting in
-conjunction with option ``B<-s>'', because they are not executed at all
-if it is decided that no rotation step is performed.
-
-Option ``B<-f>'' (force) can be used to allow the archive directory
-(option ``B<-a>'') to be silently created if it still does not exist and
-that still not existing intermediate logfiles are silently skipped in
-the rotation step.
-
-Option ``B<-v>'' (verbose) can be used to display the files which are
-rotated. Option ``B<-t>'' (trace) can be used to enable the output of
-the essential shell commands which are executed for the rotation step.
-
-Example:
-
-  #   shell script
-  shtool rotate -n10 -s1M -zbzip2:9 -d -r /var/log/ap.access.log
-  shtool rotate -n5 -s128K -zbzip2:9 -d -r /var/log/ap.error.log
-  apachectl graceful
-
-=item B<tarball> [B<-t>|B<--trace>] [B<-v>|B<--verbose>] [B<-o>|B<--output> I<tarball>] [B<-c>|B<--compress> I<prog>] [B<-u>|B<--user> I<user>] [B<-g>|B<--group> I<group>] [B<-e>|B<--exclude> I<pattern>] I<path> [I<path> ...]
-
-This command is for `rolling' distribution `tarballs', i.e. for the creation
-of distribution files generated by `C<tar>'. The important aspects of
-standardized free software tarballs are: first they have to unpack into a
-single top-level directory; second this top-level directory should correspond
-to the tarball filename (i.e. a tarball `C<foobar-0.8.15.tar>' per convention
-unpacks into a top-level directory `C<foobar-0.8.15/>'); third the files in
-the tarball should be sorted to allow users to use the `C<tar tvf ->' command
-in a reasonable way; fourth the owner and group of the files in the tarball
-for security reasons can be set to arbitrary names.
-
-The input files are given by the file or directory arguments I<path>.
-Directories are expanded before the comma-separated exclude (option B<-e>)
-I<pattern>s (B<grep> regular expressions) are used to filter the list.  The
-default filter is ``C<CVS,\\.cvsignore,\\.[oa]\$>''. Then the tarball is
-created with its files owned by I<user> (option B<-u>) and I<group> (option
-B<-g>). Finally the resulting tarball is piped through an optional compression
-(option B<-c>) program and written to the output file I<tarball> (option
-B<-o>).  Option ``B<-v>'' can be used to display the files which are stored in
-the tarball. Option ``B<-t>'' (trace) can be used to enable the output of the
-essential shell commands which are executed.
-
-The trick of this command is that it combines the complex process of rolling a
-good tarball into a I<single> command.
-
-Example:
-
-  #   Makefile.in
-  dist:
-      ...
-      V=`shtool version -d short ...'; \
-      shtool tarball -o foobar-$$V.tar.gz -c 'gzip -9' \
-                     -u bar -g gnu -e 'CVS,\.cvsignore' .
-
-=item B<subst> [B<-v>|B<--verbose>] [B<-t>|B<--trace>] [B<-n>|B<--nop>] [B<-s>|B<--stealth>] [B<-i>|B<--interactive>] [B<-b>|B<--backup> I<ext>] [B<-e>|B<--exec> I<cmd>] [B<-f>|B<--file> I<cmd-file>] [I<file>] [I<file> ...]
-
-This command applies one or more sed(1) substitution operations to
-F<stdin> or any number of files. The sed(1) operations are either
-specified on the command line with option ``B<-e>'' or are contained
-in a file I<cmd-file> and are specified with option ``B<-f>''. The
-original untouched I<file> is usually overridden. If option ``B<-b>''
-is given and specifies a file extension, the original file is preserved
-as ``I<file>.I<ext>''. If option ``B<-s>'' (stealth) is specified,
-the timestamp is preserved on I<file>, too. Option ``B<-i>'' enables
-interactive mode where the user has to approve each operation. Option
-``B<-n>'' (no operation) can be used to disable the actual execution of
-the essential shell commands which would be executed. Option ``B<-t>''
-(trace) can be used to enable the output of the essential shell commands
-which are executed. Option ``B<-v>'' (verbose) can be used to display
-the files which are patched.
-
-Example:
-
-  #    interactive shell
-  shtool subst -i -e 's;(c) \([0-9]*\)-2000;(c) \1-2001;' *.[ch]
-
-  #    RPM spec-file
-  %install
-      shtool subst -v -n \
-          -e 's;^\(prefix=\).*;\1 $RPM_BUILD_ROOT%{_prefix};g' \
-          -e 's;^\(sysconfdir=\).*;\1 $RPM_BUILD_ROOT%{_prefix}/etc;g' \
-          `find . -name Makefile -print`
-      make install
-
-=item B<platform> [B<-F>|B<--format> I<FORMAT>] [B<-S>|B<--sep> I<STRING>] [B<-C>|B<--conc> I<STRING>] [B<-L>|B<--lower>] [B<-U>|B<--upper>] [B<-v>|B<--verbose>] [B<-c>|B<--concise>] [B<-n>|B<--newline>] [B<-t>|B<--type> I<TYPE>] [B<-V>|B<--version>] [B<-h>|B<--help>]
-
-This command privides Unix platform identifications. It distinguishes
-a platform according to its I<hardware architecture> and I<operating
-system>. For both there is a I<class>, I<product> and I<technology>
-identification. For each of those six identifications, there is a
-I<verbose>, I<regular> and I<concise> version.
-
-This leads to eighteen (2x3x3) available identification strings for each
-platform, from which usually 2 are chosen in a particular situation.
-This is done by assembling the platform identification string using a
-I<FORMAT> string containing one or more identification constructs of the
-forms "C<%[xx]>" (verbose), "C<%{xx}>" (regular) and "C<%E<lt>xxE<gt>>"
-(concise).
-
-Option B<-F> controls the output formatting of this command. It is a
-plain-text string with the "C<%>I<xx>" constructs which expand to the
-various platform information strings. "C<%{>I<xx>C<}>" is the canonical
-regular version of the information. "C<%[>I<xx>C<]>" is the verbose
-version of the information. "C<%E<lt>>I<xx>C<E<gt>>" is the concise
-version of the information. In total, the following constructs
-are available for expansion:
-
- %[ac]    verbose hardware architecture class
- %{ac}    regular hardware architecture class
- %<ac>    concise hardware architecture class
- %[ap]    verbose hardware architecture product
- %{ap}    regular hardware architecture product
- %<ap>    concise hardware architecture product
- %[at]    verbose hardware architecture technology
- %{at}    regular hardware architecture technology
- %<at>    concise hardware architecture technology
- %[sc]    verbose operating system class
- %{sc}    regular operating system class
- %<sc>    concise operating system class
- %[sp]    verbose operating system product
- %{sp}    regular operating system product
- %<sp>    concise operating system product
- %[st]    verbose operating system technology
- %{st}    regular operating system technology
- %<st>    concise operating system technology
-
-The default I<FORMAT> string is "C<%{sp} (%{ap})>", providing the
-regular operating system and hardware architecture product information.
-
-Option B<-S> sets the word I<separation> string for the platform
-information strings. By default it is "C< >" (whitespace). It is
-especially used for separating the operating system name and the
-operating system version. Option B<-C> sets the word I<concatenation>
-string for the platform information strings. By default it is "C</>".
-It is especially used to concatenate multiple parts in operating
-system name and version parts. Option B<-L> enforces conversion of the
-output to all I<lower> case. Option B<-U> enforces conversion of the
-output to all I<upper> case. 
-
-Option B<-v> enforces verbose versions of all expansion constructs
-in I<FORMAT> string of option B<-F>. It is equal to specifying all
-expansion constructs as "C<%[>I<xx>C<]>". Option B<-c> enforces
-concise versions of all expansion constructs in I<FORMAT> string of
-option B<-F>. It is equal to specifying all expansion constructs as
-"C<%E<lt>>I<xx>C<E<gt>>". Option B<-n> omits the usual trailing newline
-character in the output.
-
-Option B<-t> is a meta option which internally sets options B<-F>,
-B<-S>, B<-C>, B<-L>, B<-U>, B<-v> or B<-c> according to I<TYPE>. It can
-be used to easily specify various commonly known outputs. The following
-I<TYPE>s are available:
-
-=over 4
-
-=item B<binary>
-
-Binary Package Id (OpenPKG RPM).
-This is equal to "C<-F '%<ap>-%<sp>' -L -S '' -C '+'>"
-and results in outputs like "C<ix86-freebsd4.9>" and "C<ix86-debian3.0>".
-
-=item B<build>
-
-Build-Time Checking (OpenPKG RPM).
-This is equal to "C<-F '%<at>-%<st>' -L -S '' -C '+'>"
-and results in outputs like "C<i686-freebsd4.9>" and "C<i586-linux2.4>".
-
-=item B<gnu>
-
-GNU F<config.guess> Style Id.
-This is similar to B<build> and is equal to "C<-F '"%<at>-unknown-%<st>' -L -S '' -C '+'>"
-and results in outputs like "C<i686-unknown-freebsd4.9>" and "C<i586-unknown-linux2.4>".
-
-=item B<web>
-
-HTTP Server Header Id.
-This is equal to "C<-F '"%<sp>-%<ac>' -S '/' -C '+'>"
-and results in outputs like "C<FreeBSD/4.9-iX86>" and "C<Debian/3.0-iX86>".
-
-=item B<summary>
-
-Human Readable Verbose Summary Information. This is equal to "C<-F
-'Class: %[sc] (%[ac])\nProduct: %[sp] (%[ap])\nTechnology: %[st]
-(%[at])' -S ' ' -C '/'>" and results in outputs like:
-
- Class:      4.4BSD (iX86)
- Product:    FreeBSD 4.9-RC (iX86)
- Technology: FreeBSD 4.9-RC (i686)
-
-and
-
- Class:      LSB (iX86)
- Product:    Debian GNU/Linux 3.0 (iX86)
- Technology: GNU/Linux 2.2/2.4 (i686)
-
-=item B<all-in-one>
-
-All-In-One Full-Table Information. This just outputs really
-all 2x2x3 identification strings as a table.
-
-=back
-
-Option B<-V> outputs the version information of B<OSSP platform> only.
-Option B<-h> outputs the usage information of B<OSSP platform> only.
-
-Example:
-
- #   configure.in
- PLATFORM=`shtool platform --type=binary`
-
-=item B<arx> [B<-t>|B<--trace>] [B<-C>|B<--command> I<cmd>] I<op> I<archive> I<file> [I<file> ...]
-
-This is a wrapper around the archive (``C<ar>'') tool. It provides the ability
-to create archives out of existing archives, i.e.  if one of I<file> matches
-``C<*.a>'' the archive member files of I<file> are used instead of I<file>
-itself. When option ``B<-t>'' (trace) is given B<arx> shows the actually
-involved shell commands. Option ``B<-C>'' can be used to set the ``ar''
-command to I<cmd>.
-
-The trick of this command is the automatic handling of archive members which
-is especially interesting if one wants to construct a (usually top-level)
-library archive out of pre-build sub-library archives (usually staying inside
-subdirs) in a large source tree.
-
-Example:
-
- #   Makefile
- AR=ar
- RANLIB=ranlib
-   :
- OBJS=foo.o bar.o
- LIBS=baz/libbaz.a quux/libquux.a
-   :
- libfoo.a: $(OBJS) $(LIBS)
-     shtool arx -C $(AR) rc libfoo.a $(OBJS) $(LIBS)
-     $(RANLIB) libfoo.a
-
-=item B<slo> [B<-p>|B<--prefix> I<str>] -- B<-L>I<dir> B<-l>I<lib> [ B<-L>I<dir> B<-l>I<lib> ... ]
-
-This command separates the linker options ``B<-L>'' and ``B<-l>'' by library
-class. It's argument line can actually be an arbitrary command line where those
-options are contained. B<slo> parses these two options only and ignores the
-remaining contents. The result is a trivial shell script on C<stdout> which
-defines six variables containing the ``B<-L>'' and ``B<-l>'' options sorted by
-class:
-
-``C<SLO_DIRS_OBJ>'' and ``C<SLO_LIBS_OBJ>'' contains the ``B<-L>'' and
-``B<-l>'' options of static libraries,  ``C<SLO_DIRS_PIC>'' and
-``C<SLO_LIBS_PIC>'' contains the ``B<-L>'' and ``B<-l>'' options of static
-libraries containing PIC ("Position Independent Code") and
-``C<SLO_DIRS_DSO>'' and ``C<SLO_LIBS_DSO>'' contains the ``B<-L>'' and
-``B<-l>'' options of shared libraries. The B<-p> option can be used to
-change the default variable prefix from "C<SLO_>" to I<str>.
-
-The intent of this separation is to provide a way between static and shared
-libraries which is important if one wants to link custom DSOs against
-libraries, because not all platforms all one to link these DSOs against shared
-libraries. So one first has to separate out the shared libraries and link the
-DSO only against the static libraries.  One can use this command also to just
-sort the options.
-
-Example:
-
-  #   configure.in
-  LINK_STD="$LDFLAGS $LIBS"
-  eval `shtool slo $LINK_STD`
-  LINK_DSO="$SLO_DIRS_OBJ $SLO_LIBS_OBJ $SLO_DIRS_PIC $SLO_LIBS_PIC"
-    :
-
-=item B<scpp> [B<-v>|B<--verbose>] [B<-p>|B<--preserve>] [B<-f>|B<--filter> I<filter>] [B<-o>|B<--output> I<ofile>] [B<-t>|B<--template> I<tfile>] [B<-M>|B<--mark> I<mark>] [B<-D>|B<--define> I<dname>] [B<-C>|B<--class> I<cname>] I<file> [I<file> ...]
-
-This command is an additional ANSI C source file pre-processor for sharing
-cpp(1) code segments, internal variables and internal functions. The intention
-for this comes from writing libraries in ANSI C. Here a common shared internal
-header file is usually used for sharing information between the library
-source files.
-
-The operation is to parse special constructs in I<file>s, generate a few
-things out of these constructs and insert them at position I<mark> in I<tfile>
-by writing the output to I<ofile>. Additionally the I<file>s are never touched
-or modified. Instead the constructs are removed later by the cpp(1) phase of
-the build process. The only prerequisite is that every I<file> has a
-``C<#include ">I<ofile>C<">'' at the top.
-
-This command provides the following features: First it avoids namespace
-pollution and reduces prototyping efforts for internal symbols by recognizing
-functions and variables which are defined with the storage class identifier
-``I<cname>''.  For instance if I<cname> is ``intern'', a function ``C<intern
-void *foobar(int quux)>'' in one of the I<file>s is translated into both a
-``C<#define foobar __foobar>'' and a ``C<extern void *foobar(int quux);>'' in
-I<ofile>. Additionally a global ``C<#define> I<cname> C</**/>'' is also
-created in I<ofile> to let the compiler silently ignore this additional
-storage class identifier.
-
-Second, the library source files usually want to share C<typedef>s,
-C<#define>s, etc.  over the source file boundaries. To achieve this one can
-either place this stuff manually into I<tfile> or use the second feature of
-B<scpp>: All code in I<file>s encapsulated with ``C<#if >I<dname> ...
-C<#endif>'' is automatically copied to I<ofile>. Additionally a global
-``C<#define> I<dname> C<0>'' is also created in I<ofile> to let the compiler
-silently skip this parts (because it was already found in the header).
-
-Option ``B<-v>'' can be used to enable some processing output. Option
-``B<-p>'' can be used to make the decision whether to overwrite I<ofile>
-independent of the generated ``#line'' lines. This is useful for
-Makefiles if the real contents of I<ofile> will not change, just
-line numbers. Option ``B<-f>'' (which can occur multiple times) can
-be used to apply one or more pre-processing sed(1) I<filter> commands
-(usually of type ``C<s/.../.../>'') to each input file before their
-input is parsed.
-
-Example:
-
-  #   Makefile
-  SRCS=foo_bar.c foo_quux.c
-  foo_p.h: foo_p.h.in
-       shtool scpp -o foo_p.h -t foo_p.h.in \
-                   -M %%MARK%% -D cpp -C intern $(SRCS)
-
-  /* foo_p.h.in */
-  #ifndef FOO_P_H
-  #define FOO_P_H
-  %%MARK%%
-  #endif /* FOO_P_H */
-
-  /* foo_bar.c */
-  #include "foo_p.h"
-  #if cpp
-  #define OURS_INIT 4711
-  #endif
-  intern int ours;
-  static int myone = 0815;
-  intern int bar(void)
-  {
-      ours += myone;
-  }
-
-  /* foo_quux.c */
-  #include "foo_p.h"
-  int main(int argc, char *argv[])
-  {
-      int i;
-      ours = OURS_INIT
-      for (i = 0; i < 10; i++) {
-          bar();
-          printf("ours now %d\n", ours);
-      }
-      return 0;
-  }
-
-=item B<version> [B<-l>|B<--language> I<lang>] [B<-n>|B<--name> I<name>] [B<-p>|B<--prefix> I<prefix>] [B<-s>|B<--set> I<version>] [B<-e>|B<--edit>] [B<-i>|B<--increase> I<knob>] [B<-d>|B<--display> I<type>] I<file>
-
-This command generates and maintains a version information
-file I<file> for program name I<name> in either textual
-(I<lang>="C<txt>"), ANSI C (I<lang>="c"), Perl (I<lang>="perl") or
-Python (I<lang>="python") language. The version is always described
-with a triple E<lt>I<version>,I<revision>,I<level>E<gt> and is
-represented by a string which always matches the regular expression
-``C<[0-9]+\.[0-9]+[sabp.][0-9]+>''. When the option ``B<-s>'' is given,
-the contents of I<file> is overridden with the specified I<version>.
-
-When option ``B<-i>'' is used, the current version in I<file> is updated
-by increasing one element of the version where I<knob> can be one of
-the following: ``C<v>'' for increasing the version by 1 (and resetting
-revision and level to 0), ``C<r>'' for increasing the revision by 1 (and
-resetting level to 0) or ``C<l>'' for increasing the level by 1.  Option
-``B<-e>'' can be used to interactively enter a new version.
-
-Unless option ``B<-e>'', ``B<-i>'' or ``B<-s>'' is specified, the performed
-action is to display the current version.  Option ``B<-d>'' then can be used
-to control the display type: "C<short>" for a short version display, "C<long>"
-for a longer version display, "C<hex>" for a hexadecimal display of the version
-and "C<libtool>" for a format suitable for use with GNU libtool.
-
-The hexadecimal format for a version C<v.rtl> is C<VVRRTLL> where C<VV>
-and C<RR> directly correspond to C<v> and C<r>, C<T> encodes the level
-type as C<9>, C<2>, C<1>, C<0> (representing C<s>, C<p>/C<.>, C<b>, C<a>
-in this order) and C<LL> is either directly corresponding to C<l> or set
-to C<99> if level type is C<s>.
-
-Example:
-
- #   shell script
- shtool version -l c -n FooBar -p foobar -s 1.2b3 version.c
-
- #   configure.in
- V=`shtool version -l c -d long version.c`
- echo "Configuring FooBar, Version $V"
-
-=item B<path> [B<-s>|B<--suppress>] [B<-r>|B<--reverse>] [B<-d>|B<--dirname>] [B<-b>|B<--basename>] [B<-m>|B<--magic>] [B<-p>|B<--path> I<path>] I<str> [I<str> ...]
-
-This command deals with shell C<$PATH> variables. It can find a program
-executable in $PATH or I<path> through one or more filenames (given by one or
-more I<str> arguments). The result is the absolute filesystem path to the
-program displayed on C<stdout> plus an exit code of 0 if it was really
-found.
-
-The option ``B<-s>'' can be used to suppress the output which is useful to
-just test whether a program exists with the help of the return code.  The
-option ``B<-m>'' enables some magic where currently for the programs
-``C<perl>'' and ``C<cpp>'' an advanced magic search is done. The option
-``B<-r>'' can be used to transform a forward path to a subdirectory into a
-reverse path. Option ``B<-d>'' and ``B<-b>'' just output the directory or base
-name of I<str>.
-
-Examples:
-
- #   shell script
- awk=`shtool path -p "${PATH}:." gawk nawk awk`
- perl=`shtool path -m perl`
- cpp=`shtool path -m cpp`
- revpath=`shtool path -r path/to/subdir`
-
-=back
-
 =head1 SEE ALSO
 
 sh(1), cp(1), rm(1), mkdir(1), awk(1), sed(1).


ossp-pkg/shtool/shtoolize.in 1.33 -> 1.34

--- shtoolize.in 2004/01/01 16:54:20     1.33
+++ shtoolize.in 2004/02/12 16:06:27     1.34
@@ -181,6 +181,9 @@
     $code .= $_ while (<FP>);
     close(FP);
 
+    #   strip away embedded documentation
+    $code =~ s|##\n##\s+manual\s+page\n##\s+.+$||si;
+
     #   determine attributes
     my $len = length($code);
     my $oneline = '';
@@ -451,7 +454,7 @@
 foreach $name (@used) {
     print OUT "    $name )\n";
     $code = $SCRIPT->{$name}->{CODE1};
-    $code =~ s|^|        |mg;
+    $code =~ s|^(.)|        $1|mg;
     sub mysub {
         my ($prolog, $code, $epilog) = @_;
         $code =~ s|^        ||mg;
@@ -496,7 +499,7 @@
 foreach $name (@used) {
     print OUT "$name )\n";
     $code = $SCRIPT->{$name}->{CODE2};
-    $code =~ s|^|    |mg;
+    $code =~ s|^(.)|    $1|mg;
     sub mysub {
         my ($prolog, $code, $epilog) = @_;
         $code =~ s|^    ||mg;

CVSTrac 2.0.1