V10/cmd/uucp/uupick

#	@(#)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