exit 1
fi
-if [ $UID == 0 ]; then
+if [ $(id -u) == 0 ]; then
echo 1>&2 '***' $(dirname $0) should not be in root\'s \$PATH
echo 1>&2 '***' call '"'$DAISY_CHAIN $@'"' directly
exit 1
# find out.
GRP_CHAIN=""
# name or GID?
-printf '%d' $1 &>/dev/null
+printf '%d' "$1" &>/dev/null
if [ $? -eq 0 ]; then
GRP_LIST=$(id -G)
else
exit 1
fi
-if [ $UID == 0 ]; then
+if [ $(id -u) -eq 0 ]; then
echo 1>&2 '***' $(dirname $0) should not be in root\'s \$PATH
echo 1>&2 '***' call '"'$DAISY_CHAIN $@'"' directly.
exit 1
opts=""
while [ -n "$1" ]; do
case $1 in
- (-*) opts="$opts $1" ; shift ;;
+ (-[cfvR]|--[chnpqrsv]*) opts="$opts $1" ; shift ;;
(*) break ;;
esac
done
+
# $1 should now be the perm arg
+perm=$1
-# Octal or symbolic?
-printf '%d' $1 &>/dev/null
-if [ $? -eq 0 ]; then
- perm=$1
-else
- touch /tmp/hack-o-matic-4500
- $DAISY_CHAIN $1 /tmp/hack-o-matic-4500
- perm=$(stat --printf "%a" /tmp/hack-o-matic-4500)
- rm -f /tmp/hack-o-matic-4500
+# Octal or symbolic? If the latter, convert to the former.
+printf '%d' "$perm" &>/dev/null
+if [ $? -ne 0 ]; then
+ testfile=$(mktemp hack-o-matic-chmod.XXXXX --tmpdir)
+ exec $DAISY_CHAIN ${perm} ${testfile}
+ perm=$(stat --printf "%a" ${testfile})
+ rm -f ${testfile}
fi
# if it is 4 digits, they're trying to do funky shit
-if [ $perm -gt 999 ]; then
+if [ ${perm} -gt 999 ]; then
# Chop off the 1st digit (the set{uid,gid,sticky} bit)
perm=${perm/?/}
echo 1>&2 '***' chmod ${cmdline}
# kill off $1 and replace it with our maybe sanitised $perm
shift 1; set -- $perm "$@"
-exec $DAISY_CHAIN ${opts} $@ || exit $?
+exec $DAISY_CHAIN ${opts} "$@" || exit $?
exit 0
# Local variables:
exit 1
fi
-if [ $UID == 0 ]; then
+if [ $(id -u) == 0 ]; then
echo 1>&2 '***' $(dirname $0) should not be in root\'s \$PATH
echo 1>&2 '***' call '"'$DAISY_CHAIN $@'"' directly.
exit 1
# Catch the case where USER is somebody else.
if [ -n "$usr" ]; then
- printf '%d' $usr &>/dev/null
+ printf '%d' "$usr" &>/dev/null
if [ $? -eq 0 ]; then
if [ $usr -ne $(id -u) ]; then
report=1
# Catch the case where GROUP isn't in our groups.
if [ -n "$grp" -a $report -eq 0 ]; then
GRP_CHAIN=""
- printf '%d' $grp &>/dev/null
+ printf '%d' "$grp" &>/dev/null
if [ $? -eq 0 ]; then
GRP_LIST=$(id -G)
else
fi
## root has no business installing things here!!
-if [ $UID -eq 0 ]; then
+if [ $(id -u) -eq 0 ]; then
echo 1>&2 '***' $(dirname $0) should not be in root\'s \$PATH
echo 1>&2 '***' call '"'$DAISY_CHAIN ${pristinecmd[*]}'"' directly
exit 1
local GRP_LIST
# GID or name?
- printf '%d' $group &>/dev/null
+ printf '%d' "$group" &>/dev/null
if [ $? -eq 0 ]; then
GRP_LIST=$(id -G)
else
local MYNAME
# UID or name?
- printf '%d' $owner &>/dev/null
+ printf '%d' "$owner" &>/dev/null
if [ $? -eq 0 ]; then
MYNAME=$(id -u)
else
# are symbolic, convert them to numerical first.
_perms()
{
- local p
+ local testfile
### HACK-O-MATIC:
# Convert symbolic permissions to numerical.
- printf '%d' $perm &>/dev/null
- if [ $? -eq 0 ]; then
- p=$perm
- else
- touch /tmp/hack-o-matic-9000
+ printf '%d' "$perm" &>/dev/null
+ if [ $? -ne 0 ]; then
+ testfile=$(mktemp hack-o-matic-install.XXXXX --tmpdir)
# A tiny risk hard-coding /bin/chmod here, but I don't won't
# the chmod wrapper in play for this.
- /bin/chmod $perm /tmp/hack-o-matic-9000
- p=$(stat --printf "%a" /tmp/hack-o-matic-9000)
- rm -f /tmp/hack-o-matic-9000
+ exec /bin/chmod ${perm} ${testfile}
+ perm=$(stat --printf "%a" ${testfile})
+ rm -f ${testfile}
fi
# Catch the funky shit
- if [ $p -gt 999 ]; then
+ if [ $perm -gt 999 ]; then
report
- cmdopts="$cmdopts -m${p/?/}"
+ cmdopts="$cmdopts -m${perm/?/}"
else
- cmdopts="$cmdopts -m$p"
+ cmdopts="$cmdopts -m$perm"
fi
return
}
shift $(( $OPTIND - 1 ))
# We've done all we can, now lets run install
-$DAISY_CHAIN ${cmdopts} $@ || exit $?
+exec $DAISY_CHAIN ${cmdopts} $@ || exit $?
exit 0
### End install
exit 1
fi
-if [ $UID == 0 ]; then
+if [ $(id -u) == 0 ]; then
echo 1>&2 '***' $(dirname $0) should not be in root\'s \$PATH
echo 1>&2 '***' Call '"'$DAISY_CHAIN $@'"' directly.
exit 1