SysIII/etc/install
: INSTALL COMMAND
FLIST=/etc/syslist
DEFAULT="/bin /usr/bin /etc /lib /usr/lib" FOUND="" MOVOLD=""
ECHO=echo PATH=:/bin:/etc FLAG=off MODE=775 OWNER=bin GROUP=bin
USAGE="eval echo 'usage: install [options] file [dir1 ...]'; exit 2"
for i in $*
do
if [ $FLAG = on ]
then
case $i in
-*) echo "install: The -c, -f, -n options each require a directory following!"
exit 2;;
*) FLAG=off
continue;;
esac
fi
case $i in
-c) if [ x$ARG = x-f -o x$arg = x-i -o x$arg = x-o -o x$arg = x-n ]
then
echo "install: -c dir: illegal option with ${arg-"-f"} option!"
exit 2
elif test $# -lt 3 -o $# -gt 4
then
echo "install: -c option must have either 3 or 4 args!"
exit 2
else
direct=$2
FLAG=on
ARG=-c
shift; shift
fi;;
-f) if [ x$ARG = x-c -o x$arg = x-i -o x$arg = x-n ]
then
echo "install: -f dir: illegal option with ${arg-"-c"} option!"
exit 2
elif test $# -lt 3 -o $# -gt 5
then
echo "install: -f option must have 3, 4, or 5 args!"
exit 2
else
direct=$2
FLAG=on
ARG=-f
shift; shift
fi;;
-i) if [ x$ARG = x-c -o x$ARG = x-f ]
then
echo "install: -i: illegal option with $ARG option!"
exit 2
elif test $# -lt 3
then
echo "install: -i option requires at least 3 args!"
exit 2
else
DEFAULT=""
arg=-i
shift
fi;;
-o) if [ x$ARG = x-c ]
then
echo "install: -o: illegal option with $ARG option!"
exit 2
elif test $# -lt 2
then
$USAGE
else
MOVOLD=yes
arg=-o
shift
fi;;
-n) if [ x$ARG = x-c -o x$ARG = x-f ]
then
echo "install: -n dir: illegal option with $ARG option!"
exit 2
elif test $# -lt 3
then
echo "install: -n option requires at least 3 args!"
exit 2
else
LASTRES=$2
FLAG=on
FOUND=n
arg=-n
shift; shift
fi;;
-s) if test $# -lt 2
then
$USAGE
else
ECHO=:
arg=-s
shift
fi;;
*) break;;
esac
done
FILEP=$i FILE=`echo $i | sed -e "s/.*\///"`
if [ x$ARG = x-c -o x$ARG = x-f ]
then
case $2 in
-*) $USAGE ;;
"") : ;;
esac
if test -f $direct/$FILE -o -f $direct/$FILE/$FILE
then
case $ARG in
-c) echo "install: $FILE already exists in $direct"
exit 2;;
-f) if [ -k $direct/$FILE ]
then
chmod -t $direct/$FILE
$direct/$FILE < /dev/null > /dev/null
tbit=on
fi
if [ "$MOVOLD" = yes ]
then
mv $direct/$FILE $direct/OLD$FILE
cp $direct/OLD$FILE $direct/$FILE
if [ $? = 0 ]
then
$ECHO "$FILE moved to $direct/OLD$FILE"
else
echo "install: cp $direct/OLD$FILE $direct/$FILE failed"
exit 2
fi
fi
if cp $FILEP $direct/$FILE
then
$ECHO "$FILEP installed as $direct/$FILE"
fi
if [ "$tbit" = on ]
then
chmod +t $direct/$FILE
fi
exit;;
esac
else
cp $FILEP $direct/$FILE
if [ $? = 0 ]
then
$ECHO "$FILEP installed as $direct/$FILE"
chmod $MODE $direct/$FILE
chgrp $GROUP $direct/$FILE
chown $OWNER $direct/$FILE
fi
fi
exit
fi
shift
PUTHERE=""
for i in $*
do
case $i in
-*) $USAGE ;;
esac
PUTHOLD=`find $i -name $FILE -type f -print`
PUTHERE=`expr "\`echo $PUTHOLD\`" : '\([^ ]*\)'`
if [ "$PUTHERE" != "" ]
then break
fi
done
if [ -r $FLIST -a "$PUTHERE" = "" ]
then
PUTHERE=`grep "/${FILE}$" $FLIST | sed -n -e '1p'`
fi
if [ "$PUTHERE" = "" ]
then
for i in $DEFAULT
do
PUTHOLD=`find $i -name $FILE -type f -print`
PUTHERE=`expr "\`echo $PUTHOLD\`" : '\([^ ]*\)'`
if [ "$PUTHERE" != "" ]
then break
fi
done
fi
if [ "$PUTHERE" != "" ]
then
if [ -k $PUTHERE ]
then
chmod -t $PUTHERE
$PUTHERE < /dev/null > /dev/null
tbit=on
fi
if [ "$MOVOLD" = yes ]
then
old=`echo $PUTHERE | sed -e "s/\/[^\/]*$//"`
mv $PUTHERE $old/OLD$FILE
cp $old/OLD$FILE $PUTHERE
if [ $? = 0 ]
then
$ECHO "old $FILE moved to $old/OLD$FILE"
else
echo "install: cp $direct/OLD$FILE $direct/$FILE failed"
exit 2
fi
fi
FOUND=y
if cp $FILEP $PUTHERE
then
if [ "$tbit" = on ]
then
chmod +t $PUTHERE
fi
$ECHO "$FILEP installed as $PUTHERE"
break
else
exit 2
fi
fi
case $FOUND in
"") echo "install: $FILE was not found anywhere!"
exit 2;;
y) : ;;
n) cp $FILEP $LASTRES/$FILE
if [ $? = 0 ]
then
$ECHO "$FILEP installed as $LASTRES/$FILE by default!"
cd $LASTRES
chmod $MODE $FILE
chgrp $GROUP $FILE
chown $OWNER $FILE
fi;;
esac