|
|
1.1 ! root 1: # @(#)uupick.sh 1.3 ! 2: # sys: system; user: login name; cdir: current directory; ! 3: # tdir: temporary directory; pu: PUBDIR/receive/user; ! 4: cdir=`pwd` ! 5: dir="" ! 6: abs="" ! 7: sys="" ! 8: var="" ! 9: varto="" ! 10: varfrom="" ! 11: trap "exit" 1 2 13 15 ! 12: # get options ! 13: if test $# -eq 1 ! 14: then echo "Usage: $0 [-s sysname]"; exit ! 15: fi ! 16: while test $# -gt 1 ! 17: do ! 18: case $1 in ! 19: -s) sys=$2 ;; ! 20: *) echo "Usage: $0 [-s sysname]"; exit ! 21: esac ! 22: shift; shift ! 23: done ! 24: user=`id | sed -n "/^uid=[0-9]*(\([^)]*\)).*/s//\1/p"` ! 25: ! 26: if test -z "$user" ! 27: then echo "User id required!"; exit ! 28: fi ! 29: ! 30: pu=/usr/spool/uucppublic/receive/$user ! 31: if test -d $pu -a -s $pu ! 32: then ! 33: for i in `ls $pu` ! 34: do ! 35: if test $sys ! 36: then if test $sys != $i; then continue; fi ! 37: fi ! 38: if test -d $pu/$i -a -s $pu/$i ! 39: then ! 40: cd $pu/$i ! 41: for j in `ls -a` ! 42: do ! 43: if test $j = "." -o $j = ".."; then continue; fi ! 44: if test -d $j ! 45: then echo "from system $i: directory $j" ! 46: else echo "from system $i: file $j" ! 47: fi ! 48: while true ! 49: do ! 50: echo '?' ! 51: if read cmd dir ! 52: then ! 53: trap ": ;;" 1 ! 54: eval dir=$dir ! 55: case $cmd in ! 56: d) rm -fr $j ; break ;; ! 57: "") break ;; ! 58: #options m, a: if dir path ! 59: #begins with a slash, use full ! 60: #path for destination;otherwise, ! 61: #use path relative to current dir; ! 62: #default destination is current dir ! 63: m) if test $dir ! 64: then abs=`expr "$dir" : '/.*'` ! 65: if test $abs != 0 ! 66: then tdir=$dir ! 67: elif test -d "$cdir/$dir" ! 68: then tdir=$cdir/$dir ! 69: fi ! 70: else ! 71: tdir=$cdir ! 72: fi ! 73: find $j -print |cpio -pdmuv $tdir \ ! 74: 1>> /tmp/$$uupick ! 75: for k in `cat /tmp/$$uupick` ! 76: do ! 77: varto="$k" ! 78: var=`echo $k |sed -n "s;^$tdir/;;p"` ! 79: varfrom="$pu/$i/$var" ! 80: cmp $varfrom $varto ! 81: if test $? -eq 0; then ! 82: rm -fr $varfrom ! 83: fi ! 84: done ! 85: rm -f /tmp/$$uupick ! 86: break;; ! 87: #As files are transferred, ! 88: #put their names in /tmp/$$uupick. ! 89: #Only remove those named files ! 90: #from...receive/..dir if cmp ! 91: #verifies transfer took place ! 92: a) if test $dir ! 93: then abs=`expr "$dir" : '/.*'` ! 94: if test $abs != 0 ! 95: then tdir=$dir ! 96: elif test -d "$cdir/$dir" ! 97: then tdir=$cdir/$dir ! 98: fi ! 99: else ! 100: tdir=$cdir ! 101: fi ! 102: find * -print |\ ! 103: cpio -pdmuv $tdir 1>> /tmp/$$uupick ! 104: for k in `cat /tmp/$$uupick` ! 105: do ! 106: varto="$k" ! 107: var=`echo $k |sed -n "s;^$tdir/;;p"` ! 108: varfrom="$pu/$i/$var" ! 109: cmp $varfrom $varto ! 110: if test $? -eq 0; then ! 111: rm -fr $varfrom ! 112: fi ! 113: done ! 114: rm -f /tmp/$$uupick ! 115: break 2 ;; ! 116: p) if test -d $j ! 117: then find . -print ! 118: elif test -s $j ! 119: then cat $j ! 120: fi ;; ! 121: q) break 3 ;; ! 122: !*) ex=`expr "$cmd $dir" : '!\(.*\)'` ! 123: tdir=`pwd` ! 124: cd $cdir ! 125: sh -c "$ex" ! 126: cd $tdir ! 127: echo '!' ;; ! 128: *) echo "usage: [d][m dir][a dir][p][q]\c" ! 129: echo "[cntl-d][!cmd][*][new-line]" ;; ! 130: esac ! 131: trap 1 ! 132: else break 3 ! 133: fi ! 134: done ! 135: done ! 136: fi ! 137: done ! 138: fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.