|
|
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.