Annotation of researchv10no/cmd/odist/ape/dist.sh, revision 1.1.1.1

1.1       root        1: #! /bin/sh -
                      2: 
                      3: umask 022
                      4: 
                      5: LDIR=%LDIR%
                      6: SDIR=%SDIR%
                      7: QPREFIX=Q.
                      8: 
                      9: PATH=$LDIR:/bin:/usr/bin:/usr/ucb:/usr/bsd
                     10: export PATH
                     11: 
                     12: DEST=$LDIR/destinations
                     13: 
                     14: showq=0
                     15: recv=0
                     16: notify=0
                     17: systems=
                     18: usage='usage: dist [-q|-r] [system|-[Ff] file] [-n] [files...]'
                     19: 
                     20: while [ $# -gt 0 ]
                     21: do
                     22:        case "$1" in
                     23:        -q)
                     24:                showq=1
                     25:                ;;
                     26:        -r)
                     27:                recv=1
                     28:                ;;
                     29:        -n)
                     30:                notify=1
                     31:                ;;
                     32:        -[Ff])
                     33:                if [ $# -lt 2 ]
                     34:                then
                     35:                        echo "$usage" 1>&2
                     36:                        exit 1
                     37:                fi
                     38:                if [ x$1 = x-f -a -r "$2" ]
                     39:                then
                     40:                        systems=`cat "$2" 2>/dev/null`
                     41:                elif [ -r $DEST/"$2" ]
                     42:                then
                     43:                        systems=`cat $DEST/"$2" 2>/dev/null`
                     44:                else
                     45:                        echo "dist: can't open '$2'" 1>&2
                     46:                        exit 1
                     47:                fi
                     48:                shift
                     49:                ;;
                     50:        -*)
                     51:                echo "dist: unknown flag '$1'" 1>&2
                     52:                exit 1
                     53:                ;;
                     54:        *)
                     55:                if [ "x$systems" != x ]
                     56:                then
                     57:                        break
                     58:                fi
                     59:                systems="$1"
                     60:                ;;
                     61:        esac
                     62:        shift
                     63: done
                     64: 
                     65: if [ $recv = 1 ]
                     66: then
                     67:        if [ x"$systems" = x ]
                     68:        then
                     69:                echo dist: no systems specified 1>&2
                     70:                exit 1
                     71:        else
                     72:                for sys in $systems
                     73:                do
                     74:                        echo $sys:
                     75:                        connect $sys transmit io receive || exit 1
                     76:                done
                     77:                exit 0
                     78:        fi
                     79: fi
                     80: 
                     81: if [ $showq = 1 ]
                     82: then
                     83:        if [ x"$systems" = x ]
                     84:        then
                     85:                showq
                     86:                exit 0
                     87:        else
                     88:                for sys in $systems
                     89:                do
                     90:                        echo $sys:
                     91:                        connect $sys showq i /bin/cat
                     92:                done
                     93:                exit 0
                     94:        fi
                     95: fi
                     96: 
                     97: if [ $# = 0 ]
                     98: then
                     99:        echo "$usage" 1>&2
                    100:        exit 1
                    101: fi
                    102: 
                    103: # construct spool directory
                    104: for d in `echo $$ | awk '{for (i = 0; i < 1000; ++i) printf "%03d%d\n", i, $1}'`
                    105: do
                    106:        if [ ! -f $SDIR/$QPREFIX$d ]
                    107:        then
                    108:                dir=$QPREFIX$d
                    109:                mkdir $SDIR/$dir && break
                    110:                echo "dist: can't make spool directory" 1>&2
                    111:                exit 1
                    112:        fi
                    113: done
                    114: 
                    115: data=$SDIR/$dir/data
                    116: ctl=$SDIR/$dir/tempctl
                    117: files=$SDIR/$dir/files
                    118: 
                    119: # use canonical system names.
                    120: canon $systems | awk '{for (i = 1; i <= NF; ++i) printf "%d %s\n", ++n, $i}' > $ctl
                    121: 
                    122: mkpkg "$@" > $data
                    123: 
                    124: pwd=`pwd`
                    125: for f in "$@"
                    126: do
                    127:        case "$f" in
                    128:        -*)     # flag to mkpkg
                    129:                ;;
                    130:        /*)
                    131:                echo "$f"
                    132:                ;;
                    133:        *)
                    134:                echo "$pwd/$f"
                    135:                ;;
                    136:        esac
                    137: done | sort > $files
                    138: 
                    139: # rename the ctl file to its real name; at this point the package
                    140: # is now available for shipment.
                    141: mv $ctl $SDIR/$dir/ctl
                    142: 
                    143: # supersede old jobs containing the same files
                    144: cd $SDIR
                    145: for d in $QPREFIX*
                    146: do
                    147:        test $d = $dir && continue
                    148:        test -w $d || continue
                    149:        if [ `comm -23 $d/files $dir/files | wc -c` = 0 ]
                    150:        then
                    151:                sort +1 $d/ctl $dir/ctl | uniq -d -2 |
                    152:                while read num sys
                    153:                do
                    154:                        echo superseded by $dir > $d/$num.done
                    155:                done
                    156:        fi
                    157: done
                    158: 
                    159: # clean up any jobs we completely superseded.
                    160: cleanq

unix.superglobalmegacorp.com

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