Index: ossp-pkg/shiela/.cvsignore RCS File: /v/ossp/cvs/ossp-pkg/shiela/.cvsignore,v rcsdiff -q -kk '-r1.2' '-r1.3' -u '/v/ossp/cvs/ossp-pkg/shiela/.cvsignore,v' 2>/dev/null --- .cvsignore 2001/02/10 16:40:26 1.2 +++ .cvsignore 2002/08/19 19:10:37 1.3 @@ -3,3 +3,5 @@ shiela.1 shiela-install shiela-install.1 +config.h +config.h.in Index: ossp-pkg/shiela/ChangeLog RCS File: /v/ossp/cvs/ossp-pkg/shiela/ChangeLog,v rcsdiff -q -kk '-r1.9' '-r1.10' -u '/v/ossp/cvs/ossp-pkg/shiela/ChangeLog,v' 2>/dev/null --- ChangeLog 2001/12/31 15:00:31 1.9 +++ ChangeLog 2002/08/19 19:10:37 1.10 @@ -9,7 +9,11 @@ ChangeLog - Changes between 0.9.1 and 0.9.2 (10-Feb-2001 to xx-Jan-2002): + Changes between 0.9.1 and 0.9.2 (10-Feb-2001 to 19-Aug-2002): + + *) Switched to the OSSP devtool build environment + and upgraded to GNU shtool 1.6.1 and GNU autoconf 2.53. + [Ralf S. Engelschall] *) Fixed warning in dereferencing uninitialized variable. [Ralf S. Engelschall, Markus Sander] Index: ossp-pkg/shiela/Makefile.in RCS File: /v/ossp/cvs/ossp-pkg/shiela/Makefile.in,v rcsdiff -q -kk '-r1.2' '-r1.3' -u '/v/ossp/cvs/ossp-pkg/shiela/Makefile.in,v' 2>/dev/null --- Makefile.in 2001/02/10 16:40:26 1.2 +++ Makefile.in 2002/08/19 19:10:37 1.3 @@ -66,28 +66,5 @@ distclean: clean $(RM) config.cache config.status config.log - $(RM) Makefile - -dist: distclean - @echo "Fixing source tree permissions"; \ - $(SHTOOL) fixperm * - @V=`$(SHTOOL) version -l txt -d short VERSION`; \ - echo "Rolling tarball shiela-$${V}.tar.gz:"; \ - $(SHTOOL) tarball -o shiela-$${V}.tar.gz \ - -e 'CVS,\.cvsignore,^\.' -c 'gzip -9' -u ossp -g shiela .; \ - ls -l shiela-$${V}.tar.gz - -update-tools: - shtoolize -q -o shtool echo mkdir install tarball fixperm version path - $(RM) configure - autoconf - -update-version: - V=`./shtool version -l txt -d short VERSION`; \ - $(SED) -e "s/version = '.*'/version = '$$V'/" shiela.pl.n && mv shiela.pl.n shiela.pl; \ - $(SED) -e "s/version=\".*\"/version=\"$$V\"/" shiela-install.sh.n && mv shiela-install.sh.n shiela-install.sh; \ - V=`./shtool version -l txt -d long VERSION`; \ - $(SED) -e "s/Version .*(.*)/Version $$V/g" README.n && mv README.n README; \ - $(SED) -e "s/B .*/B $$V/" shiela.pod.n && mv shiela.pod.n shiela.pod; \ - $(SED) -e "s/B .*/B $$V/" shiela-install.pod.n && mv shiela-install.pod.n shiela-install.pod + $(RM) Makefile config.h Index: ossp-pkg/shiela/README RCS File: /v/ossp/cvs/ossp-pkg/shiela/README,v rcsdiff -q -kk '-r1.4' '-r1.5' -u '/v/ossp/cvs/ossp-pkg/shiela/README,v' 2>/dev/null --- README 2001/12/31 15:00:31 1.4 +++ README 2002/08/19 19:10:37 1.5 @@ -7,7 +7,7 @@ OSSP Shiela - Access Control and Logging Facility for CVS Copyright (c) 2000-2002 Ralf S. Engelschall - Version 0.9.2 (05-May-2001) + Version Shiela is an access control and logging facility for use with the Concurrent Versions System (CVS). It is intended to be hooked into CVS's Index: ossp-pkg/shiela/VERSION RCS File: /v/ossp/cvs/ossp-pkg/shiela/VERSION,v rcsdiff -q -kk '-r1.3' '-r1.4' -u '/v/ossp/cvs/ossp-pkg/shiela/VERSION,v' 2>/dev/null --- VERSION 2001/05/04 13:25:18 1.3 +++ VERSION 2002/08/19 19:10:37 1.4 @@ -1,3 +1,6 @@ - This is OSSP Shiela, Version 0.9.2 (05-May-2001) + VERSION -- Version Information for OSSP shiela (syntax: Text) + [automatically generated and maintained by GNU shtool] + + This is OSSP shiela, Version 0.9.2 (19-Aug-2002) Index: ossp-pkg/shiela/configure.ac RCS File: /v/ossp/cvs/ossp-pkg/shiela/configure.ac,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/shiela/configure.ac,v' | diff -u /dev/null - -L'ossp-pkg/shiela/configure.ac' 2>/dev/null --- ossp-pkg/shiela/configure.ac +++ - 2024-05-09 21:37:31.155167940 +0200 @@ -0,0 +1,38 @@ + +AC_PREREQ(2.53) +AC_INIT + +V=`./shtool version -ltxt -dlong VERSION` +./shtool echo -e "Configuring %BOSSP shiela%b, Version %B${V}%b" +echo "Copyright (c) 2000-2002 Ralf S. Engelschall " + +AC_MSG_CHECKING(for Perl program) +AC_ARG_WITH(perl,dnl +[ --with-perl=PATH force the use of a particular Perl program], +with_perl="$withval", +if test ".$with_perl" = .; then + with_perl=`./shtool path -m perl5 perl` +fi +)dnl +PATH_PERL="$with_perl" +AC_SUBST(PATH_PERL) +AC_MSG_RESULT($PATH_PERL) + +AC_MSG_CHECKING(for CVS program) +AC_ARG_WITH(cvs,dnl +[ --with-cvs=PATH force the use of a particular CVS program], +with_cvs="$withval", +if test ".$with_cvs" = .; then + with_perl=`./shtool path cvs` +fi +)dnl +PATH_CVS="$with_cvs" +AC_SUBST(PATH_CVS) +AC_MSG_RESULT($PATH_CVS) + +AC_SET_MAKE + +AC_CONFIG_HEADERS(config.h) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT + Index: ossp-pkg/shiela/configure.in RCS File: /v/ossp/cvs/ossp-pkg/shiela/Attic/configure.in,v co -q -kk -p'1.3' '/v/ossp/cvs/ossp-pkg/shiela/Attic/configure.in,v' | diff -u - /dev/null -L'ossp-pkg/shiela/configure.in' 2>/dev/null --- ossp-pkg/shiela/configure.in +++ /dev/null 2024-05-09 21:37:11.000000000 +0200 @@ -1,38 +0,0 @@ - -AC_INIT(README) - -AC_DIVERT_PUSH(AC_DIVERSION_NOTICE) -V=`./shtool version -ltxt -dlong VERSION` -./shtool echo -e "Configuring %BOSSP Shiela%b, Version %B${V}%b" -echo "Copyright (c) 2000-2002 Ralf S. Engelschall " -echo "" -AC_DIVERT_POP() - -AC_MSG_CHECKING(for Perl program) -AC_ARG_WITH(perl,dnl -[ --with-perl=PATH force the use of a particular Perl program], -with_perl="$withval", -if test ".$with_perl" = .; then - with_perl=`./shtool path -m perl5 perl` -fi -)dnl -PATH_PERL="$with_perl" -AC_SUBST(PATH_PERL) -AC_MSG_RESULT($PATH_PERL) - -AC_MSG_CHECKING(for CVS program) -AC_ARG_WITH(cvs,dnl -[ --with-cvs=PATH force the use of a particular CVS program], -with_cvs="$withval", -if test ".$with_cvs" = .; then - with_perl=`./shtool path cvs` -fi -)dnl -PATH_CVS="$with_cvs" -AC_SUBST(PATH_CVS) -AC_MSG_RESULT($PATH_CVS) - -AC_SET_MAKE - -AC_OUTPUT(Makefile) - Index: ossp-pkg/shiela/devtool RCS File: /v/ossp/cvs/ossp-pkg/shiela/devtool,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/shiela/devtool,v' | diff -u /dev/null - -L'ossp-pkg/shiela/devtool' 2>/dev/null --- ossp-pkg/shiela/devtool +++ - 2024-05-09 21:37:31.204355064 +0200 @@ -0,0 +1,47 @@ +#!/bin/sh +## +## devtool -- Development Tool +## Copyright (c) 2001 Ralf S. Engelschall +## + +if [ $# -eq 0 ]; then + echo "devtool:USAGE: devtool [ ...]" 1>&2 + exit 1 +fi + +cmd="$1" +shift + +devtoolfunc="./devtool.func" + +if [ ! -f devtool.conf ]; then + echo "devtool:ERROR: no devtool.conf in current directory" 1>&2 + exit 1 +fi + +cmdline=`grep "^%$cmd" devtool.conf` +if [ ".$cmdline" = . ]; then + echo "devtool:ERROR: command $cmd not found in devtool.conf" 1>&2 + exit 1 +fi + +if [ ".$TMPDIR" != . ]; then + tmpdir="$TMPDIR" +elif [ ".$TEMPDIR" != . ]; then + tmpdir="$TEMPDIR" +else + tmpdir="/tmp" +fi +tmpfile="$tmpdir/rc.$$.tmp" + +rm -f $tmpfile +touch $tmpfile +echo ". $devtoolfunc" >>$tmpfile +( sed >$tmpfile + +sh $tmpfile "$@" + +rm -f $tmpfile >/dev/null 2>&1 || true + Index: ossp-pkg/shiela/devtool.conf RCS File: /v/ossp/cvs/ossp-pkg/shiela/devtool.conf,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/shiela/devtool.conf,v' | diff -u /dev/null - -L'ossp-pkg/shiela/devtool.conf' 2>/dev/null --- ossp-pkg/shiela/devtool.conf +++ - 2024-05-09 21:37:31.206975898 +0200 @@ -0,0 +1,68 @@ +## +## devtool.conf -- Development Tool Configuration +## + +%autogen + @autogen shtool 1.6.1 "1.6.*" all + @autogen autoconf 2.53 "2.5[3-9]*" + +%autoclean + @autoclean shtool + @autoclean autoconf + +%configure + ./configure \ + --prefix=/tmp/shiela \ + "$@" + +%release + ./devtool version + ./devtool tag + ./devtool dist + ./devtool upload + +%version + ./shtool version -ltxt -n "OSSP shiela" -e VERSION + V=`./shtool version -ltxt -dlong VERSION` + sed -e "s/Version .*(.*)/Version $V/g" README.n && mv README.n README + sed -e "s/version = '.*'/version = '$V'/" shiela.pl.n && mv shiela.pl.n shiela.pl + sed -e "s/version=\".*\"/version=\"$V\"/" shiela-install.sh.n && mv shiela-install.sh.n shiela-install.sh + V=`./shtool version -l txt -d long VERSION` + sed -e "s/Version .*(.*)/Version $V/g" README.n && mv README.n README + sed -e "s/B .*/B $V/" shiela.pod.n && mv shiela.pod.n shiela.pod + sed -e "s/B .*/B $V/" shiela-install.pod.n && mv shiela-install.pod.n shiela-install.pod + +%tag + V=`./shtool version -ltxt -dshort VERSION | sed -e 's;\.;_;g'` + echo "+++ tagging CVS sources as SHIELA_${V}" + cvs tag SHIELA_${V} + +%dist + echo "+++ removing old tarballs" + rm -f shiela-*.tar.gz + echo "+++ generating" + ./devtool autoclean + ./devtool autogen + echo "+++ configuring" + ./configure + echo "+++ building" + make clean all man + echo "+++ cleaning" + make distclean + echo "+++ fixing" + ./shtool fixperm -v . + echo "+++ rolling" + V=`./shtool version -ltxt -dshort VERSION` + ./shtool tarball -o shiela-${V}.tar.gz -d shiela-${V} -u ossp -g ossp \ + -e 'CVS,\.cvsignore,\.[ao]$,^\.,devtool*,*.tar.gz,^#.*,.*~$' -c 'gzip --best' . + ls -l shiela-${V}.tar.gz + echo "+++ testing" + gunzip /dev/null --- ossp-pkg/shiela/devtool.func +++ - 2024-05-09 21:37:31.304499434 +0200 @@ -0,0 +1,73 @@ +## +## devtool.func -- Development Tool Functions +## Copyright (c) 2001-2002 Ralf S. Engelschall +## + +devtool_require () { + t="$1"; o="$2"; p="$3"; e="$4"; a="$5" + v=`($t $o | head -1 | awk "{ print \\\$$p; }") 2>/dev/null` + if [ ".$v" = . ]; then + echo "devtool:ERROR: unable to determine version of $t" 1>&2 + exit 1 + fi + case "$v" in + $e ) + ;; + $a ) + echo "devtool:WARNING: $t version $v still accepted, although expected $e." 1>&2 + ;; + * ) + echo "devtool:ERROR: $t version $e expected, but found $v." 1>&2 + exit 1 + ;; + esac + echo "$v" +} + +devtool_autogen () { + tool=$1 + shift + case $tool in + autoconf ) + autoconf_version=`devtool_require autoconf --version 4 "$1" "$2"` + echo "generating (GNU Autoconf $autoconf_version): configure config.h.in" + autoconf + autoheader 2>&1 | grep -v "is unchanged" + rm -rf autom4te.cache >/dev/null 2>&1 + ;; + libtool ) + libtoolize_version=`devtool_require libtoolize --version 4 "$1" "$2"` + echo "generating (GNU Libtool $libtoolize_version): ltmain.sh, libtool.m4, config.guess, config.sub" + libtoolize --force --copy >/dev/null 2>&1 + cp `libtoolize --force --copy --dry-run | grep "add the contents of" |\ + sed -e 's;^[^\`]*\`;;' -e "s;'.*;;"` libtool.m4 + ;; + shtool ) + shtoolize_version=`devtool_require shtoolize -v 3 "$1" "$2"` + echo "generating (GNU Shtool $shtoolize_version): shtool" + shift + shift + shtoolize -q "$@" + ;; + esac +} + +devtool_autoclean () { + tool=$1 + shift + case $tool in + autoconf ) + echo "removing: configure config.h.in" + rm -f configure config.h.in + ;; + libtool ) + echo "removing: ltmain.sh libtool.m4 config.guess config.sub" + rm -f ltmain.sh libtool.m4 config.guess config.sub + ;; + shtool ) + echo "removing: shtool" + rm -f shtool + ;; + esac +} + Index: ossp-pkg/shiela/shiela-install.pod RCS File: /v/ossp/cvs/ossp-pkg/shiela/shiela-install.pod,v rcsdiff -q -kk '-r1.4' '-r1.5' -u '/v/ossp/cvs/ossp-pkg/shiela/shiela-install.pod,v' 2>/dev/null --- shiela-install.pod 2001/12/31 15:00:31 1.4 +++ shiela-install.pod 2002/08/19 19:10:38 1.5 @@ -32,7 +32,7 @@ =head1 VERSION -B 0.9.2 (05-May-2001) +B 0.9.2 (19-Aug-2002) =head1 DESCRIPTION Index: ossp-pkg/shiela/shiela-install.sh RCS File: /v/ossp/cvs/ossp-pkg/shiela/shiela-install.sh,v rcsdiff -q -kk '-r1.5' '-r1.6' -u '/v/ossp/cvs/ossp-pkg/shiela/shiela-install.sh,v' 2>/dev/null --- shiela-install.sh 2001/12/31 15:00:31 1.5 +++ shiela-install.sh 2002/08/19 19:10:38 1.6 @@ -25,7 +25,7 @@ ## shiela-install: Shiela repository install program (syntax: Bourne-Shell) ## -version="0.9.2" +version="0.9.2 (19-Aug-2002)" prefix="@prefix@" bindir="@bindir@" Index: ossp-pkg/shiela/shiela.pl RCS File: /v/ossp/cvs/ossp-pkg/shiela/shiela.pl,v rcsdiff -q -kk '-r1.15' '-r1.16' -u '/v/ossp/cvs/ossp-pkg/shiela/shiela.pl,v' 2>/dev/null --- shiela.pl 2001/12/31 15:00:32 1.15 +++ shiela.pl 2002/08/19 19:10:38 1.16 @@ -25,7 +25,7 @@ ## shiela: Shiela control program (syntax: Perl) ## -my $version = '0.9.2'; +my $version = '0.9.2 (19-Aug-2002)'; require 5.005; Index: ossp-pkg/shiela/shiela.pod RCS File: /v/ossp/cvs/ossp-pkg/shiela/shiela.pod,v rcsdiff -q -kk '-r1.4' '-r1.5' -u '/v/ossp/cvs/ossp-pkg/shiela/shiela.pod,v' 2>/dev/null --- shiela.pod 2001/12/31 15:00:32 1.4 +++ shiela.pod 2002/08/19 19:10:38 1.5 @@ -32,7 +32,7 @@ =head1 VERSION -B 0.9.2 (05-May-2001) +B 0.9.2 (19-Aug-2002) =head1 DESCRIPTION Index: ossp-pkg/shiela/shtool RCS File: /v/ossp/cvs/ossp-pkg/shiela/Attic/shtool,v co -q -kk -p'1.4' '/v/ossp/cvs/ossp-pkg/shiela/Attic/shtool,v' | diff -u - /dev/null -L'ossp-pkg/shiela/shtool' 2>/dev/null --- ossp-pkg/shiela/shtool +++ /dev/null 2024-05-09 21:37:11.000000000 +0200 @@ -1,1443 +0,0 @@ -#!/bin/sh -## -## GNU shtool -- The GNU Portable Shell Tool -## Copyright (c) 1994-2001 Ralf S. Engelschall -## -## See http://www.gnu.org/software/shtool/ for more information. -## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. -## -## Version: 1.5.3 (19-Apr-2001) -## Contents: 7/17 available modules -## - -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -## USA, or contact Ralf S. Engelschall . -## -## NOTICE: Given that you include this file verbatim into your own -## source tree, you are justified in saying that it remains separate -## from your package, and that this way you are simply just using GNU -## shtool. So, in this situation, there is no requirement that your -## package itself is licensed under the GNU General Public License in -## order to take advantage of GNU shtool. -## - -## -## Usage: shtool [] [ [] []] -## -## Available commands: -## echo Print string with optional construct expansion -## install Install a program, script or datafile -## mkdir Make one or more directories -## fixperm Fix file permissions inside a source tree -## tarball Roll distribution tarballs -## version Maintain a version information file -## path Deal with program paths -## -## Not available commands (because module was not built-in): -## mdate Pretty-print modification time of a file or dir -## table Pretty-print a field-separated list as a table -## prop Display progress with a running propeller -## move Move files with simultaneous substitution -## mkln Make link with calculation of relative paths -## mkshadow Make a shadow tree through symbolic links -## guessos Simple operating system guesser -## arx Extended archive command -## slo Separate linker options by library class -## scpp Sharing C Pre-Processor -## - -if [ $# -eq 0 ]; then - echo "$0:Error: invalid command line" 1>&2 - echo "$0:Hint: run \`$0 -h' for usage" 1>&2 - exit 1 -fi -if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then - echo "This is GNU shtool, version 1.5.3 (19-Apr-2001)" - echo "Copyright (c) 1994-2001 Ralf S. Engelschall " - echo "Report bugs to " - echo '' - echo "Usage: shtool [] [ [] []]" - echo '' - echo 'Available global :' - echo ' -v, --version display shtool version information' - echo ' -h, --help display shtool usage help page (this one)' - echo ' -d, --debug display shell trace information' - echo ' -r, --recreate recreate this shtool script via shtoolize' - echo '' - echo 'Available [] []:' - echo ' echo [-n] [-e] [ ...]' - echo ' install [-v] [-t] [-c] [-C] [-s] [-m] [-o] [-g]' - echo ' [-e] [ ...] ' - echo ' mkdir [-t] [-f] [-p] [-m] [ ...]' - echo ' fixperm [-v] [-t] [ ...]' - echo ' tarball [-t] [-v] [-o] [-c] [-d] [-u]' - echo ' [-g] [-e] [ ...]' - echo ' version [-l] [-n] [-p] [-s] [-e]' - echo ' [-i] [-d] ' - echo ' path [-s] [-r] [-d] [-b] [-m] [-p] [ ...]' - echo '' - echo 'Not available (because module was not built-in):' - echo ' mdate [-n] [-z] [-s] [-d] [-f] [-o] ' - echo ' table [-F] [-w] [-c] [-s] ...' - echo ' prop [-p]' - echo ' move [-v] [-t] [-e] [-p] ' - echo ' mkln [-t] [-f] [-s] [ ...] ' - echo ' mkshadow [-v] [-t] [-a] ' - echo ' guessos ' - echo ' arx [-t] [-C] [ ...]' - echo ' slo [-p] -- -L -l [-L -l ...]' - echo ' scpp [-v] [-p] [-f] [-o] [-t] [-M]' - echo ' [-D] [-C] [ ...]' - echo '' - exit 0 -fi -if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then - echo "GNU shtool 1.5.3 (19-Apr-2001)" - exit 0 -fi -if [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then - shtoolize -oshtool echo install mkdir fixperm tarball version path - exit 0 -fi -if [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then - shift - set -x -fi -name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'` -case "$name" in - echo|install|mkdir|fixperm|tarball|version|path ) - # implicit tool command selection - tool="$name" - ;; - * ) - # explicit tool command selection - tool="$1" - shift - ;; -esac -arg_spec="" -opt_spec="" -gen_tmpfile=no - -## -## DISPATCH INTO SCRIPT PROLOG -## - -case $tool in - echo ) - str_tool="echo" - str_usage="[-n] [-e] [ ...]" - arg_spec="0+" - opt_spec="n.e." - opt_n=no - opt_e=no - ;; - install ) - str_tool="install" - str_usage="[-v] [-t] [-c] [-C] [-s] [-m] [-o] [-g] [-e] [ ...] " - arg_spec="2+" - opt_spec="v.t.c.C.s.m:o:g:e+" - opt_v=no - opt_t=no - opt_c=no - opt_C=no - opt_s=no - opt_m="0755" - opt_o="" - opt_g="" - opt_e="" - ;; - mkdir ) - str_tool="mkdir" - str_usage="[-t] [-f] [-p] [-m] [ ...]" - arg_spec="1+" - opt_spec="t.f.p.m:" - opt_t=no - opt_f=no - opt_p=no - opt_m="" - ;; - fixperm ) - str_tool="fixperm" - str_usage="[-v] [-t] [ ...]" - arg_spec="1+" - opt_spec="v.t." - opt_v=no - opt_t=no - ;; - tarball ) - str_tool="tarball" - str_usage="[-t] [-v] [-o] [-c] [-d] [-u] [-g] [-e] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="t.v.o:c:d:u:g:e:" - opt_t=no - opt_v=no - opt_o="" - opt_c="" - opt_d="" - opt_u="" - opt_g="" - opt_e="CVS,\\.cvsignore,\\.[oa]\$" - ;; - version ) - str_tool="version" - str_usage="[-l] [-n] [-p] [-s] [-e] [-i] [-d] " - arg_spec="1=" - opt_spec="l:n:p:s:i:e.d:" - opt_l="txt" - opt_n="unknown" - opt_p="" - opt_s="" - opt_e="no" - opt_i="" - opt_d="short" - ;; - path ) - str_tool="path" - str_usage="[-s] [-r] [-d] [-b] [-m] [-p] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="s.r.d.b.m.p:" - opt_s=no - opt_r=no - opt_d=no - opt_b=no - opt_m=no - opt_p="$PATH" - ;; - -* ) - echo "$0:Error: unknown option \`$tool'" 2>&1 - echo "$0:Hint: run \`$0 -h' for usage" 2>&1 - exit 1 - ;; - * ) - echo "$0:Error: unknown command \`$tool'" 2>&1 - echo "$0:Hint: run \`$0 -h' for usage" 2>&1 - exit 1 - ;; -esac - -## -## COMMON UTILITY CODE -## - -# determine name of tool -if [ ".$tool" != . ]; then - # used inside shtool script - toolcmd="$0 $tool" - toolcmdhelp="shtool $tool" - msgprefix="shtool:$tool" -else - # used as standalone script - toolcmd="$0" - toolcmdhelp="sh $0" - msgprefix="$str_tool" -fi - -# parse argument specification string -eval `echo $arg_spec |\ - sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` - -# parse option specification string -eval `echo h.$opt_spec |\ - sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` - -# interate over argument line -opt_PREV='' -while [ $# -gt 0 ]; do - # special option stops processing - if [ ".$1" = ".--" ]; then - shift - break - fi - - # determine option and argument - opt_ARG_OK=no - if [ ".$opt_PREV" != . ]; then - # merge previous seen option with argument - opt_OPT="$opt_PREV" - opt_ARG="$1" - opt_ARG_OK=yes - opt_PREV='' - else - # split argument into option and argument - case "$1" in - -[a-zA-Z0-9]*) - eval `echo "x$1" |\ - sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ - -e 's/";\(.*\)$/"; opt_ARG="\1"/'` - ;; - -[a-zA-Z0-9]) - opt_OPT=`echo "x$1" | cut -c3-` - opt_ARG='' - ;; - *) - break - ;; - esac - fi - - # eat up option - shift - - # determine whether option needs an argument - eval "opt_MODE=\$opt_MODE_${opt_OPT}" - if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then - if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then - opt_PREV="$opt_OPT" - continue - fi - fi - - # process option - case $opt_MODE in - '.' ) - # boolean option - eval "opt_${opt_OPT}=yes" - ;; - ':' ) - # option with argument (multiple occurances override) - eval "opt_${opt_OPT}=\"\$opt_ARG\"" - ;; - '+' ) - # option with argument (multiple occurances append) - eval "opt_${opt_OPT}=\"\$opt_${opt_OPT} \$opt_ARG\"" - ;; - * ) - echo "$msgprefix:Error: unknown option: \`-$opt_OPT'" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 - exit 1 - ;; - esac -done -if [ ".$opt_PREV" != . ]; then - echo "$msgprefix:Error: missing argument to option \`-$opt_PREV'" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 - exit 1 -fi - -# process help option -if [ ".$opt_h" = .yes ]; then - echo "Usage: $toolcmdhelp $str_usage" - exit 0 -fi - -# complain about incorrect number of arguments -case $arg_MODE in - '=' ) - if [ $# -ne $arg_NUMS ]; then - echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - fi - ;; - '+' ) - if [ $# -lt $arg_NUMS ]; then - echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - fi - ;; -esac - -# establish a temporary file on request -if [ ".$gen_tmpfile" = .yes ]; then - if [ ".$TMPDIR" != . ]; then - tmpdir="$TMPDIR" - elif [ ".$TEMPDIR" != . ]; then - tmpdir="$TEMPDIR" - else - tmpdir="/tmp" - fi - tmpfile="$tmpdir/.shtool.$$" - rm -f $tmpfile >/dev/null 2>&1 - touch $tmpfile - chmod 600 $tmpfile -fi - -## -## DISPATCH INTO SCRIPT BODY -## - -case $tool in - -echo ) - ## - ## echo -- Print string with optional construct expansion - ## Copyright (c) 1998-2001 Ralf S. Engelschall - ## Originally written for WML as buildinfo - ## - - text="$*" - - # check for broken escape sequence expansion - seo='' - bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" != .3 ]; then - bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" = .3 ]; then - seo='-E' - fi - fi - - # check for existing -n option (to suppress newline) - minusn='' - bytes=`echo -n 123 2>/dev/null | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" = .3 ]; then - minusn='-n' - fi - - # determine terminal bold sequence - term_bold='' - term_norm='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then - case $TERM in - # for the most important terminal types we directly know the sequences - xterm|xterm*|vt220|vt220*) - term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` - term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` - ;; - vt100|vt100*) - term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` - term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` - ;; - # for all others, we try to use a possibly existing `tput' or `tcout' utility - * ) - paths=`echo $PATH | sed -e 's/:/ /g'` - for tool in tput tcout; do - for dir in $paths; do - if [ -r "$dir/$tool" ]; then - for seq in bold md smso; do # 'smso' is last - bold="`$dir/$tool $seq 2>/dev/null`" - if [ ".$bold" != . ]; then - term_bold="$bold" - break - fi - done - if [ ".$term_bold" != . ]; then - for seq in sgr0 me rmso reset; do # 'reset' is last - norm="`$dir/$tool $seq 2>/dev/null`" - if [ ".$norm" != . ]; then - term_norm="$norm" - break - fi - done - fi - break - fi - done - if [ ".$term_bold" != . -a ".$term_norm" != . ]; then - break; - fi - done - ;; - esac - if [ ".$term_bold" = . -o ".$term_norm" = . ]; then - echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 - fi - fi - - # determine user name - username='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uU]'`" != . ]; then - username="$LOGNAME" - if [ ".$username" = . ]; then - username="$USER" - if [ ".$username" = . ]; then - username="`(whoami) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$username" = . ]; then - username="`(who am i) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$username" = . ]; then - username='unknown' - fi - fi - fi - fi - fi - - # determine user id - userid='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%U'`" != . ]; then - userid="`(id -u) 2>/dev/null`" - if [ ".$userid" = . ]; then - str="`(id) 2>/dev/null`" - if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then - userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*//'` - fi - if [ ".$userid" = . ]; then - userid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid=`(ypcat passwd) 2>/dev/null | - egrep "^${username}:" | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid='?' - fi - fi - fi - fi - fi - - # determine host name - hostname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then - hostname="`(uname -n) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$hostname" = . ]; then - hostname="`(hostname) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$hostname" = . ]; then - hostname='unknown' - fi - fi - case $hostname in - *.* ) - domainname=".`echo $hostname | cut -d. -f2-`" - hostname="`echo $hostname | cut -d. -f1`" - ;; - esac - fi - - # determine domain name - domainname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then - if [ ".$domainname" = . ]; then - if [ -f /etc/resolv.conf ]; then - domainname="`egrep '^[ ]*domain' /etc/resolv.conf | head -1 |\ - sed -e 's/.*domain//' \ - -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ - -e 's/^\.//' -e 's/^/./' |\ - awk '{ printf("%s", $1); }'`" - if [ ".$domainname" = . ]; then - domainname="`egrep '^[ ]*search' /etc/resolv.conf | head -1 |\ - sed -e 's/.*search//' \ - -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ - -e 's/ .*//' -e 's/ .*//' \ - -e 's/^\.//' -e 's/^/./' |\ - awk '{ printf("%s", $1); }'`" - fi - fi - fi - fi - - # determine current time - time_day='' - time_month='' - time_year='' - time_monthname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[DMYm]'`" != . ]; then - time_day=`date '+%d'` - time_month=`date '+%m'` - time_year=`date '+%Y' 2>/dev/null` - if [ ".$time_year" = . ]; then - time_year=`date '+%y'` - case $time_year in - [5-9][0-9]) time_year="19$time_year" ;; - [0-4][0-9]) time_year="20$time_year" ;; - esac - fi - case $time_month in - 1|01) time_monthname='Jan' ;; - 2|02) time_monthname='Feb' ;; - 3|03) time_monthname='Mar' ;; - 4|04) time_monthname='Apr' ;; - 5|05) time_monthname='May' ;; - 6|06) time_monthname='Jun' ;; - 7|07) time_monthname='Jul' ;; - 8|08) time_monthname='Aug' ;; - 9|09) time_monthname='Sep' ;; - 10) time_monthname='Oct' ;; - 11) time_monthname='Nov' ;; - 12) time_monthname='Dec' ;; - esac - fi - - # expand special ``%x'' constructs - if [ ".$opt_e" = .yes ]; then - text=`echo $seo "$text" |\ - sed -e "s/%B/${term_bold}/g" \ - -e "s/%b/${term_norm}/g" \ - -e "s/%u/${username}/g" \ - -e "s/%U/${userid}/g" \ - -e "s/%h/${hostname}/g" \ - -e "s/%d/${domainname}/g" \ - -e "s/%D/${time_day}/g" \ - -e "s/%M/${time_month}/g" \ - -e "s/%Y/${time_year}/g" \ - -e "s/%m/${time_monthname}/g" 2>/dev/null` - fi - - # create output - if [ .$opt_n = .no ]; then - echo $seo "$text" - else - # the harder part: echo -n is best, because - # awk may complain about some \xx sequences. - if [ ".$minusn" != . ]; then - echo $seo $minusn "$text" - else - echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text" - fi - fi - ;; - -install ) - ## - ## install -- Install a program, script or datafile - ## Copyright (c) 1997-2001 Ralf S. Engelschall - ## Originally written for shtool - ## - - # determine source(s) and destination - argc=$# - srcs="" - while [ $# -gt 1 ]; do - srcs="$srcs $1" - shift - done - dstpath="$1" - - # type check for destination - dstisdir=0 - if [ -d $dstpath ]; then - dstpath=`echo "$dstpath" | sed -e 's:/$::'` - dstisdir=1 - fi - - # consistency check for destination - if [ $argc -gt 2 -a $dstisdir = 0 ]; then - echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2 - exit 1 - fi - - # iterate over all source(s) - for src in $srcs; do - dst=$dstpath - - # if destination is a directory, append the input filename - if [ $dstisdir = 1 ]; then - dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'` - dst="$dst/$dstfile" - fi - - # check for correct arguments - if [ ".$src" = ".$dst" ]; then - echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2 - continue - fi - if [ -d "$src" ]; then - echo "$msgprefix:Warning: source \`$src' is a directory - skipped" 1>&2 - continue - fi - - # make a temp file name in the destination directory - dsttmp=`echo $dst |\ - sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \ - -e "s;\$;/#INST@$$#;"` - - # verbosity - if [ ".$opt_v" = .yes ]; then - echo "$src -> $dst" 1>&2 - fi - - # copy or move the file name to the temp name - # (because we might be not allowed to change the source) - if [ ".$opt_C" = .yes ]; then - opt_c=yes - fi - if [ ".$opt_c" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "cp $src $dsttmp" 1>&2 - fi - cp $src $dsttmp || exit $? - else - if [ ".$opt_t" = .yes ]; then - echo "mv $src $dsttmp" 1>&2 - fi - mv $src $dsttmp || exit $? - fi - - # adjust the target file - if [ ".$opt_e" != . ]; then - sed='sed' - for e in $opt_e; do - sed="$sed -e '$e'" - done - cp $dsttmp $dsttmp.old - eval "$sed <$dsttmp.old >$dsttmp" || exit $? - rm -f $dsttmp.old - fi - if [ ".$opt_s" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "strip $dsttmp" 1>&2 - fi - strip $dsttmp || exit $? - fi - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o $dsttmp" 1>&2 - fi - chown $opt_o $dsttmp || exit $? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g $dsttmp" 1>&2 - fi - chgrp $opt_g $dsttmp || exit $? - fi - if [ ".$opt_m" != ".-" ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m $dsttmp" 1>&2 - fi - chmod $opt_m $dsttmp || exit $? - fi - - # determine whether to do a quick install - # (has to be done _after_ the strip was already done) - quick=no - if [ ".$opt_C" = .yes ]; then - if [ -r $dst ]; then - if cmp -s $src $dst; then - quick=yes - fi - fi - fi - - # finally, install the file to the real destination - if [ $quick = yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "rm -f $dsttmp" 1>&2 - fi - rm -f $dsttmp - else - if [ ".$opt_t" = .yes ]; then - echo "rm -f $dst && mv $dsttmp $dst" 1>&2 - fi - rm -f $dst && mv $dsttmp $dst - fi - done - ;; - -mkdir ) - ## - ## mkdir -- Make one or more directories - ## Copyright (c) 1996-2001 Ralf S. Engelschall - ## Originally written for public domain by Noah Friedman - ## Cleaned up and enhanced for shtool - ## - - errstatus=0 - for p in ${1+"$@"}; do - # if the directory already exists... - if [ -d "$p" ]; then - if [ ".$opt_f" = .no -a ".$opt_p" = .no ]; then - echo "$msgprefix:Error: directory already exists: $p" 1>&2 - errstatus=1 - break - else - continue - fi - fi - # if the directory has to be created... - if [ ".$opt_p" = .no ]; then - if [ ".$opt_t" = .yes ]; then - echo "mkdir $p" 1>&2 - fi - mkdir $p || errstatus=$? - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m $p" 1>&2 - fi - chmod $opt_m $p || errstatus=$? - fi - else - # the smart situation - set fnord `echo ":$p" |\ - sed -e 's/^:\//%/' \ - -e 's/^://' \ - -e 's/\// /g' \ - -e 's/^%/\//'` - shift - pathcomp='' - for d in ${1+"$@"}; do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp="./$pathcomp" ;; - esac - if [ ! -d "$pathcomp" ]; then - if [ ".$opt_t" = .yes ]; then - echo "mkdir $pathcomp" 1>&2 - fi - mkdir $pathcomp || errstatus=$? - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m $pathcomp" 1>&2 - fi - chmod $opt_m $pathcomp || errstatus=$? - fi - fi - pathcomp="$pathcomp/" - done - fi - done - exit $errstatus - ;; - -fixperm ) - ## - ## fixperm -- Fix file permissions inside a source tree - ## Copyright (c) 1996-2001 Ralf S. Engelschall - ## Originally written for ePerl - ## - - paths="$*" - - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - - # iterate over paths - for p in $paths; do - for file in `find $p -depth -print`; do - if [ -f $file ]; then - if [ $minusx $file ]; then - if [ ".$opt_v" = .yes ]; then - echo "-rwxrwxr-x $file" 2>&1 - fi - if [ ".$opt_t" = .yes ]; then - echo "chmod 775 $file" 2>&1 - fi - chmod 775 $file - else - if [ ".$opt_v" = .yes ]; then - echo "-rw-rw-r-- $file" 2>&1 - fi - if [ ".$opt_t" = .yes ]; then - echo "chmod 664 $file" 2>&1 - fi - chmod 664 $file - fi - continue - fi - if [ -d $file ]; then - if [ ".$opt_v" = .yes ]; then - echo "drwxrwxr-x $file" 2>&1 - fi - if [ ".$opt_t" = .yes ]; then - echo "chmod 775 $file" 2>&1 - fi - chmod 775 $file - continue - fi - if [ ".$opt_v" = .yes ]; then - echo "?????????? $file" 2>&1 - fi - done - done - ;; - -tarball ) - ## - ## tarball -- Roll distribution tarballs - ## Copyright (c) 1999-2001 Ralf S. Engelschall - ## Originally written for shtool - ## - - srcs="$*" - - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - - # find the tools - paths="`echo $PATH |\ - sed -e 's%/*:%:%g' -e 's%/*$%%' \ - -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ - -e 's/:/ /g'`" - for spec in find:gfind,find tar:gtar,tar tardy:tardy,tarcust; do - prg=`echo $spec | sed -e 's/:.*$//'` - tools=`echo $spec | sed -e 's/^.*://'` - eval "prg_${prg}=''" - # iterate over tools - for tool in `echo $tools | sed -e 's/,/ /g'`; do - # iterate over paths - for path in $paths; do - if [ $minusx "$path/$tool" -a ! -d "$path/$tool" ]; then - eval "prg_${prg}=\"$path/$tool\"" - break - fi - done - eval "val=\$prg_${prg}" - if [ ".$val" != . ]; then - break - fi - done - done - - # expand source paths - exclude='' - for pat in `echo $opt_e | sed 's/,/ /g'`; do - exclude="$exclude | grep -v '$pat'" - done - if [ ".$opt_t" = .yes ]; then - echo "cp /dev/null $tmpfile.lst" 1>&2 - fi - cp /dev/null $tmpfile.lst - for src in $srcs; do - if [ -d $src ]; then - if [ ".$opt_t" = .yes ]; then - echo "(cd $src && $prg_find . -type f -depth -print) | sed -e 's:^\\.\$::' -e 's:^\\./::' | cat $exclude >>$tmpfile.lst" 1>&2 - fi - (cd $src && $prg_find . -type f -depth -print) |\ - sed -e 's:^\.$::' -e 's:^\./::' | eval cat $exclude >>$tmpfile.lst - else - if [ ".$opt_t" = .yes ]; then - echo "echo $src >>$tmpfile.lst" 1>&2 - fi - echo $src >>$tmpfile.lst - fi - done - sort <$tmpfile.lst >$tmpfile.lst.n - mv $tmpfile.lst.n $tmpfile.lst - if [ ".$opt_v" = .yes ]; then - cat $tmpfile.lst | sed -e 's/^/ /' 1>&2 - fi - - # determine tarball file and directory name - if [ ".$opt_o" != . ]; then - tarfile="$opt_o" - if [ ".$opt_d" != . ]; then - tarname="$opt_d" - else - tarname=`echo $tarfile | sed -e 's/\.tar.*$//' -e 's;.*/\([^/]*\)$;\1;'` - fi - else - if [ ".$opt_d" != . ]; then - tarname="$opt_d" - elif [ -d "$from" ]; then - tarname=`echo $from | sed -e 's;.*/\([^/]*\)$;\1;'` - else - tarname="out" - fi - tarfile="$tarname.tar" - fi - - # roll the tarball - compress='' - if [ ".$opt_c" != . ]; then - compress="| $opt_c" - fi - if [ ".$prg_tardy" != . ]; then - # the elegant hackers way - tardy_opt="--prefix=$tarname" - tardy_opt="$tardy_opt --user_number=0 --group_number=0" # security! - if [ ".$opt_u" != . ]; then - tardy_opt="$tardy_opt --user_name=$opt_u" - fi - if [ ".$opt_g" != . ]; then - tardy_opt="$tardy_opt --group_name=$opt_g" - fi - if [ ".$opt_t" = .yes ]; then - echo "cat $tmpfile.lst | xargs $prg_tar cf - | $prg_tardy $tardy_opt | cat $compress >$tmpfile.out" 1>&2 - fi - cat $tmpfile.lst |\ - xargs $prg_tar cf - |\ - $prg_tardy $tardy_opt |\ - eval cat $compress >$tmpfile.out - if [ ".$opt_t" = .yes ]; then - echo "cp $tmpfile.out $tarfile" 1>&2 - fi - cp $tmpfile.out $tarfile - else - # the portable standard way - if [ ".$opt_t" = .yes ]; then - echo "mkdir $tmpdir/$tarname" 1>&2 - fi - mkdir $tmpdir/$tarname || exit 1 - if [ ".$opt_t" = .yes ]; then - echo "cat $tmpfile.lst | xargs $prg_tar cf - | (cd $tmpdir/$tarname && $prg_tar xf -)" 1>&2 - fi - cat $tmpfile.lst |\ - xargs $prg_tar cf - |\ - (cd $tmpdir/$tarname && $prg_tar xf -) - if [ ".$opt_u" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown -R $opt_u $tmpdir/$tarname >/dev/null 2>&1" 2>&1 - fi - chown -R $opt_u $tmpdir/$tarname >/dev/null 2>&1 ||\ - echo "$msgprefix:Warning: cannot set user name \`$opt_u' (would require root priviledges)" - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp -R $opt_g $tmpdir/$tarname >/dev/null 2>&1" 2>&1 - fi - chgrp -R $opt_g $tmpdir/$tarname >/dev/null 2>&1 ||\ - echo "$msgprefix:Warning: cannot set group name \`$opt_g' (would require root priviledges)" - fi - if [ ".$opt_t" = .yes ]; then - echo "(cd $tmpdir && $prg_find $tarname -type f -depth -print | sort | xargs $prg_tar cf -) | cat $compress >$tmpfile.out" 1>&2 - fi - (cd $tmpdir && $prg_find $tarname -type f -depth -print | sort | xargs $prg_tar cf -) |\ - eval cat $compress >$tmpfile.out - if [ ".$opt_t" = .yes ]; then - echo "cp $tmpfile.out $tarfile" 1>&2 - fi - cp $tmpfile.out $tarfile - if [ ".$opt_t" = .yes ]; then - echo "rm -rf $tmpdir/$tarname" 1>&2 - fi - rm -rf $tmpdir/$tarname - fi - - # cleanup - if [ ".$opt_t" = .yes ]; then - echo "rm -f $tmpfile.lst $tmpfile.out" 1>&2 - fi - rm -f $tmpfile.lst $tmpfile.out - ;; - -version ) - ## - ## version -- Maintain a version information file - ## Copyright (c) 1994-2001 Ralf S. Engelschall - ## Originally written for ePerl, rewritten from scratch for shtool - ## - - file="$1" - - # determine prefix and name - name="$opt_n" - prefix="$opt_p" - - # determine current version - triple="$opt_s" - if [ ".$triple" != . ]; then - # use given triple - if [ ".`echo $triple | grep '[0-9]*.[0-9]*[sabp.][0-9]*'`" = . ]; then - echo "$msgprefix:Error: invalid argument to option \`-s': \`$opt_s'" 1>&2 - exit 1 - fi - eval `echo $triple |\ - sed -e 's%\([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\).*%\ - ver="\1";rev="\2";typ="\3";lev="\4"%'` - tim=calc - elif [ -r $file ]; then - # determine triple from given file - eval `grep 'Version [0-9]*.[0-9]*[sabp.][0-9]* ([0-9]*-[a-zA-Z]*-[0-9]*)' $file |\ - head -1 | sed -e 's%.*Version \([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\) (\([0-9]*-[a-zA-Z]*-[0-9]*\)).*%\ - ver="\1";rev="\2";typ="\3";lev="\4";tim="\5"%'` - else - # intialise to first version - ver=0 - rev=1 - typ=. - lev=0 - tim=calc - fi - - # determine new version in batch - if [ ".$opt_i" != . ]; then - case $opt_i in - v ) ver=`expr $ver + 1` - rev=0 - lev=0 - ;; - r ) rev=`expr $rev + 1` - lev=0 - ;; - l ) lev=`expr $lev + 1` - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-i': \`$opt_i'" 1>&2 - exit 1 - ;; - esac - tim=calc - fi - - # determine new version interactively - if [ ".$opt_e" = .yes ]; then - echo "old version: ${ver}.${rev}${typ}${lev}" - while [ 1 ]; do - echo dummy | awk '{ printf("new version: "); }' - read triple - case $triple in - [0-9]*.[0-9]*[sabp.][0-9]* ) - ;; - * ) echo "$msgprefix:Error: invalid version string entered: \`$triple'" 1>&2 - continue - ;; - esac - break - done - eval `echo $triple |\ - sed -e 's%^\([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\)$%\ - ver="\1";rev="\2";typ="\3";lev="\4"%'` - tim=calc - fi - - # determine hexadecimal and libtool value of version - case $typ in - a ) typnum=0; levnum=$lev ;; - b ) typnum=1; levnum=$lev ;; - p | . ) typnum=2; levnum=$lev ;; - s ) typnum=15; levnum=255 ;; # snapshots are special - esac - hex=`echo "$ver:$rev:$typnum:$levnum" |\ - awk -F: '{ printf("0x%x%02x%1x%02x", $1, $2, $3, $4); }' |\ - tr 'abcdef' 'ABCDEF'` - ltv=`echo "$ver:$rev:$typnum:$levnum" |\ - awk -F: '{ printf("%d:%d", $1*10 + $2, $3*10 + $4); }'` - - # determine date - if [ ".$tim" = .calc ]; then - day=`date '+%d'` - month=`date '+%m'` - year=`date '+%Y' 2>/dev/null` - if [ ".$time_year" = . ]; then - year=`date '+%y'` - case $year in - [5-9][0-9]) year="19$year" ;; - [0-4][0-9]) year="20$year" ;; - esac - fi - case $month in - 1|01) month='Jan' ;; - 2|02) month='Feb' ;; - 3|03) month='Mar' ;; - 4|04) month='Apr' ;; - 5|05) month='May' ;; - 6|06) month='Jun' ;; - 7|07) month='Jul' ;; - 8|08) month='Aug' ;; - 9|09) month='Sep' ;; - 10) month='Oct' ;; - 11) month='Nov' ;; - 12) month='Dec' ;; - esac - tim="${day}-${month}-${year}" - fi - - # perform result actions - mode=show - if [ ".$opt_i" != . ]; then - mode=edit - elif [ ".$opt_e" = .yes ]; then - mode=edit - elif [ ".$opt_s" != . ]; then - mode=edit - fi - if [ ".$mode" = .show ]; then - # just display the current version - case $opt_d in - short ) - echo "${ver}.${rev}${typ}${lev}" - ;; - long ) - echo "${ver}.${rev}${typ}${lev} ($tim)" - ;; - libtool ) - echo "${ltv}" - ;; - hex ) - echo "${hex}" - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-d': \`$opt_d'" 1>&2 - exit 1 - ;; - esac - else - # update the version file - - # pre-generate various strings - triple="${ver}.${rev}${typ}${lev}" - vHex="$hex" - vShort="${triple}" - vLong="${triple} (${tim})" - vTeX="This is ${name}, Version ${triple} (${tim})" - vGNU="${name} ${triple} (${tim})" - vWeb="${name}/${triple}" - vSCCS="@(#)${name} ${triple} (${tim})" - vRCS="\$Id${name} ${triple} (${tim}) \$" - - # determine string out of filename - # (do NOT try to optimize this in any way because of portability) - filestr=`echo $file |\ - tr 'abcdefghijklmnopqrstuvwxyz./%+' \ - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ____' | sed -e 's/-/_/g'` - - # generate uppercase prefix - prefixupper=`echo $prefix |\ - tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - - # create the version file according the the selected language - echo "new version: ${vLong}" - - cp /dev/null $file - case $opt_l in - txt ) - echo >>$file "" - echo >>$file " ${file} -- Version Information for ${name} (syntax: Text)" - echo >>$file " [automatically generated and maintained by GNU shtool]" - echo >>$file "" - echo >>$file " $vTeX" - echo >>$file "" - ;; - c ) - echo >>$file "/*" - echo >>$file "** ${file} -- Version Information for ${name} (syntax: C/C++)" - echo >>$file "** [automatically generated and maintained by GNU shtool]" - echo >>$file "*/" - echo >>$file "" - echo >>$file "#ifdef _${filestr}_AS_HEADER_" - echo >>$file "" - echo >>$file "#ifndef _${filestr}_" - echo >>$file "#define _${filestr}_" - echo >>$file "" - echo >>$file "#define ${prefixupper}VERSION ${vHex}" - echo >>$file "" - echo >>$file "typedef struct {" - echo >>$file " const int v_hex;" - echo >>$file " const char *v_short;" - echo >>$file " const char *v_long;" - echo >>$file " const char *v_tex;" - echo >>$file " const char *v_gnu;" - echo >>$file " const char *v_web;" - echo >>$file " const char *v_sccs;" - echo >>$file " const char *v_rcs;" - echo >>$file "} ${prefix}version_t;" - echo >>$file "" - echo >>$file "extern ${prefix}version_t ${prefix}version;" - echo >>$file "" - echo >>$file "#endif /* _${filestr}_ */" - echo >>$file "" - echo >>$file "#else /* _${filestr}_AS_HEADER_ */" - echo >>$file "" - echo >>$file "#define _${filestr}_AS_HEADER_" - echo >>$file "#include \"${file}\"" - echo >>$file "#undef _${filestr}_AS_HEADER_" - echo >>$file "" - echo >>$file "${prefix}version_t ${prefix}version = {" - echo >>$file " ${vHex}," - echo >>$file " \"${vShort}\"," - echo >>$file " \"${vLong}\"," - echo >>$file " \"${vTeX}\"," - echo >>$file " \"${vGNU}\"," - echo >>$file " \"${vWeb}\"," - echo >>$file " \"${vSCCS}\"," - echo >>$file " \"${vRCS}\"" - echo >>$file "};" - echo >>$file "" - echo >>$file "#endif /* _${filestr}_AS_HEADER_ */" - echo >>$file "" - ;; - perl ) - echo >>$file "##" - echo >>$file "## ${file} -- Version Information for ${name} (syntax: Perl)" - echo >>$file "## [automatically generated and maintained by GNU shtool]" - echo >>$file "##" - echo >>$file "" - echo >>$file "my \$${prefix}version = {" - echo >>$file " 'v_hex' => ${vHex}," - echo >>$file " 'v_short' => \"${vShort}\"," - echo >>$file " 'v_long' => \"${vLong}\"," - echo >>$file " 'v_tex' => \"${vTeX}\"," - echo >>$file " 'v_gnu' => \"${vGNU}\"," - echo >>$file " 'v_web' => \"${vWeb}\"," - echo >>$file " 'v_sccs' => \"${vSCCS}\"," - echo >>$file " 'v_rcs' => \"\\${vRCS}/\"" - echo >>$file "};" - echo >>$file "" - echo >>$file "1;" - echo >>$file "" - ;; - python ) - echo >>$file "##" - echo >>$file "## ${file} -- Version Information for ${name} (syntax: Python)" - echo >>$file "## [automatically generated and maintained by GNU shtool]" - echo >>$file "##" - echo >>$file "" - echo >>$file "class ${prefix}version:" - echo >>$file " v_hex = ${vHex}" - echo >>$file " v_short = \"${vShort}\"" - echo >>$file " v_long = \"${vLong}\"" - echo >>$file " v_tex = \"${vTeX}\"" - echo >>$file " v_gnu = \"${vGNU}\"" - echo >>$file " v_web = \"${vWeb}\"" - echo >>$file " v_sccs = \"${vSCCS}\"" - echo >>$file " v_rcs = \"${vRCS}\"" - echo >>$file "" - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-l': \`$opt_l'" 1>&2 - exit 1 - ;; - esac - fi - ;; - -path ) - ## - ## path -- Deal with program paths - ## Copyright (c) 1998-2001 Ralf S. Engelschall - ## Originally written for Apache - ## - - namelist="$*" - - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - - # split path string - paths="`echo $opt_p |\ - sed -e 's/^:/.:/' \ - -e 's/::/:.:/g' \ - -e 's/:$/:./' \ - -e 's/:/ /g'`" - - # SPECIAL REQUEST - # translate forward to reverse path - if [ ".$opt_r" = .yes ]; then - if [ "x$namelist" = "x." ]; then - rp='.' - else - rp='' - for pe in `IFS="$IFS/"; echo $namelist`; do - rp="../$rp" - done - fi - echo $rp | sed -e 's:/$::' - exit 0 - fi - - # SPECIAL REQUEST - # strip out directory or base name - if [ ".$opt_d" = .yes ]; then - echo "$namelist" |\ - sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' - exit 0 - fi - if [ ".$opt_b" = .yes ]; then - echo "$namelist" |\ - sed -e 's;.*/\([^/]*\)$;\1;' - exit 0 - fi - - # MAGIC SITUATION - # Perl Interpreter (perl) - if [ ".$opt_m" = .yes -a ".$namelist" = .perl ]; then - rm -f $tmpfile - touch $tmpfile - found=0 - pc=99 - for dir in $paths; do - dir=`echo $dir | sed -e 's;/*$;;'` - nc=99 - for name in perl perl5 miniperl; do - if [ $minusx "$dir/$name" -a ! -d "$dir/$name" ]; then - perl="$dir/$name" - pv=`$perl -e 'printf("%.3f", $]);'` - echo "$pv:$pc:$nc:$perl" >>$tmpfile - found=1 - fi - nc=`expr $nc - 1` - done - pc=`expr $pc - 1` - done - if [ $found = 1 ]; then - perl="`cat $tmpfile | sort -u | tail -1 | cut -d: -f4`" - rm -f $tmpfile - echo "$perl" - exit 0 - fi - exit 1 - fi - - # MAGIC SITUATION - # C pre-processor (cpp) - if [ ".$opt_m" = .yes -a ".$namelist" = .cpp ]; then - echo >$tmpfile.c "#include " - echo >>$tmpfile.c "Syntax Error" - # 1. try the standard cc -E approach - cpp="${CC-cc} -E" - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # 2. try the cc -E approach and GCC's -traditional-ccp option - cpp="${CC-cc} -E -traditional-cpp" - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # 3. try a standalone cpp command in path and lib dirs - for path in $paths /lib /usr/lib /usr/local/lib; do - path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/cpp" -a ! -d "$path/cpp" ]; then - cpp="$path/cpp" - break - fi - done - if [ ".$cpp" != . ]; then - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # ok, we gave up... - cpp='' - fi - fi - fi - fi - rm -f $tmpfile.c $tmpfile.out - if [ ".$cpp" != . ]; then - echo "$cpp" - exit 0 - fi - exit 1 - fi - - # STANDARD SITUATION - # iterate over names - for name in $namelist; do - # iterate over paths - for path in $paths; do - path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/$name" -a ! -d "$path/$name" ]; then - if [ ".$opt_s" != .yes ]; then - echo "$path/$name" - fi - exit 0 - fi - done - done - exit 1 - ;; - -esac - -exit 0 - -##EOF##