Annotation of researchv10no/cmd/uucp/uupick, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.