Annotation of researchv10no/cmd/uucp/uupick, revision 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.