# @(#)uupick.sh 1.3 # sys: system; user: login name; cdir: current directory; # tdir: temporary directory; pu: PUBDIR/receive/user; cdir=`pwd` dir="" abs="" sys="" var="" varto="" varfrom="" trap "exit" 1 2 13 15 # get options if test $# -eq 1 then echo "Usage: $0 [-s sysname]"; exit fi while test $# -gt 1 do case $1 in -s) sys=$2 ;; *) echo "Usage: $0 [-s sysname]"; exit esac shift; shift done user=`id | sed -n "/^uid=[0-9]*(\([^)]*\)).*/s//\1/p"` if test -z "$user" then echo "User id required!"; exit fi pu=/usr/spool/uucppublic/receive/$user if test -d $pu -a -s $pu then for i in `ls $pu` do if test $sys then if test $sys != $i; then continue; fi fi if test -d $pu/$i -a -s $pu/$i then cd $pu/$i for j in `ls -a` do if test $j = "." -o $j = ".."; then continue; fi if test -d $j then echo "from system $i: directory $j" else echo "from system $i: file $j" fi while true do echo '?' if read cmd dir then trap ": ;;" 1 eval dir=$dir case $cmd in d) rm -fr $j ; break ;; "") break ;; #options m, a: if dir path #begins with a slash, use full #path for destination;otherwise, #use path relative to current dir; #default destination is current dir m) if test $dir then abs=`expr "$dir" : '/.*'` if test $abs != 0 then tdir=$dir elif test -d "$cdir/$dir" then tdir=$cdir/$dir fi else tdir=$cdir fi find $j -print |cpio -pdmuv $tdir \ 1>> /tmp/$$uupick for k in `cat /tmp/$$uupick` do varto="$k" var=`echo $k |sed -n "s;^$tdir/;;p"` varfrom="$pu/$i/$var" cmp $varfrom $varto if test $? -eq 0; then rm -fr $varfrom fi done rm -f /tmp/$$uupick break;; #As files are transferred, #put their names in /tmp/$$uupick. #Only remove those named files #from...receive/..dir if cmp #verifies transfer took place a) if test $dir then abs=`expr "$dir" : '/.*'` if test $abs != 0 then tdir=$dir elif test -d "$cdir/$dir" then tdir=$cdir/$dir fi else tdir=$cdir fi find * -print |\ cpio -pdmuv $tdir 1>> /tmp/$$uupick for k in `cat /tmp/$$uupick` do varto="$k" var=`echo $k |sed -n "s;^$tdir/;;p"` varfrom="$pu/$i/$var" cmp $varfrom $varto if test $? -eq 0; then rm -fr $varfrom fi done rm -f /tmp/$$uupick break 2 ;; p) if test -d $j then find . -print elif test -s $j then cat $j fi ;; q) break 3 ;; !*) ex=`expr "$cmd $dir" : '!\(.*\)'` tdir=`pwd` cd $cdir sh -c "$ex" cd $tdir echo '!' ;; *) echo "usage: [d][m dir][a dir][p][q]\c" echo "[cntl-d][!cmd][*][new-line]" ;; esac trap 1 else break 3 fi done done fi done fi