#!/bin/sh
##
## GNU shtool -- The GNU Portable Shell Tool
-## Copyright (c) 1994-2004 Ralf S. Engelschall <rse@engelschall.com>
+## Copyright (c) 1994-2005 Ralf S. Engelschall <rse@engelschall.com>
##
## See http://www.gnu.org/software/shtool/ for more information.
## See ftp://ftp.gnu.org/gnu/shtool/ for latest version.
##
-## Version: 2.0.1 (11-Aug-2004)
+## Version: 2.0.2 (15-Jun-2005)
## Contents: 6/19 available modules
##
exit 1
fi
if [ ".$1" = ".-h" ] || [ ".$1" = ".--help" ]; then
- echo "This is GNU shtool, version 2.0.1 (11-Aug-2004)"
- echo "Copyright (c) 1994-2004 Ralf S. Engelschall <rse@engelschall.com>"
+ echo "This is GNU shtool, version 2.0.2 (15-Jun-2005)"
+ echo "Copyright (c) 1994-2005 Ralf S. Engelschall <rse@engelschall.com>"
echo "Report bugs to <bug-shtool@gnu.org>"
echo ''
echo "Usage: shtool [<options>] [<cmd-name> [<cmd-options>] [<cmd-args>]]"
exit 0
fi
if [ ".$1" = ".-v" ] || [ ".$1" = ".--version" ]; then
- echo "GNU shtool 2.0.1 (11-Aug-2004)"
+ echo "GNU shtool 2.0.2 (15-Jun-2005)"
exit 0
fi
if [ ".$1" = ".-r" ] || [ ".$1" = ".--recreate" ]; then
- shtoolize -obuild/shtool echo move install mkdir mkln subst
+ shtoolize -oshtool echo move install mkdir mkln subst
exit 0
fi
if [ ".$1" = ".-d" ] || [ ".$1" = ".--debug" ]; then
# establish a temporary file on request
if [ ".$gen_tmpfile" = .yes ]; then
+ # create (explicitly) secure temporary directory
if [ ".$TMPDIR" != . ]; then
tmpdir="$TMPDIR"
elif [ ".$TEMPDIR" != . ]; then
else
tmpdir="/tmp"
fi
- tmpfile="$tmpdir/.shtool.$$"
- rm -f $tmpfile >/dev/null 2>&1
- touch $tmpfile
- chmod 600 $tmpfile
+ tmpdir="$tmpdir/.shtool.$$"
+ ( umask 077
+ rm -rf "$tmpdir" >/dev/null 2>&1 || true
+ mkdir "$tmpdir" >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "$msgprefix:Error: failed to create temporary directory \`$tmpdir'" 1>&2
+ exit 1
+ fi
+ )
+
+ # create (implicitly) secure temporary file
+ tmpfile="$tmpdir/shtool.tmp"
+ touch "$tmpfile"
fi
# utility function: map string to lower case
shtool_exit () {
rc="$1"
if [ ".$gen_tmpfile" = .yes ]; then
- rm -f $tmpfile >/dev/null 2>&1 || true
+ rm -rf "$tmpdir" >/dev/null 2>&1 || true
fi
exit $rc
}
echo )
##
## echo -- Print string with optional construct expansion
- ## Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
+ ## Copyright (c) 1998-2005 Ralf S. Engelschall <rse@engelschall.com>
##
text="$*"
move )
##
## move -- Move files with simultaneous substitution
- ## Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>
+ ## Copyright (c) 1999-2005 Ralf S. Engelschall <rse@engelschall.com>
##
src="$1"
install )
##
## install -- Install a program, script or datafile
- ## Copyright (c) 1997-2004 Ralf S. Engelschall <rse@engelschall.com>
+ ## Copyright (c) 1997-2005 Ralf S. Engelschall <rse@engelschall.com>
##
# special case: "shtool install -d <dir> [...]" internally
mkdir )
##
## mkdir -- Make one or more directories
- ## Copyright (c) 1996-2004 Ralf S. Engelschall <rse@engelschall.com>
+ ## Copyright (c) 1996-2005 Ralf S. Engelschall <rse@engelschall.com>
##
errstatus=0
mkln )
##
## mkln -- Make link with calculation of relative paths
- ## Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>
+ ## Copyright (c) 1998-2005 Ralf S. Engelschall <rse@engelschall.com>
##
# determine source(s) and destination
subst )
##
## subst -- Apply sed(1) substitution operations
- ## Copyright (c) 2001-2004 Ralf S. Engelschall <rse@engelschall.com>
+ ## Copyright (c) 2001-2005 Ralf S. Engelschall <rse@engelschall.com>
##
# remember optional list of file(s)