|
|
1.1 ! root 1: #! /bin/csh -f ! 2: # NOTE: USING C SHELL, not bourne shell. ! 3: # Filter for straight ascii text ! 4: # arguments: ! 5: # ascf -w90 -l160 -i0 -n <user> -h <Proc.Host> -J<filename> -C<subm.Host> ! 6: # -D<Other parms> -D<more parms> ! 7: echo $* >> /tmp/kk$$ ! 8: ! 9: umask 077 ! 10: set TMP=/tmp/maha$$ ERR=/tmp/mahaE$$ noglob ! 11: onintr cleanup ! 12: ! 13: # Figure out which printer: ! 14: switch ( $0 ) ! 15: case *.dp : ! 16: set PTR=diderot ! 17: set STAT=/usr/spool/dpd/status ! 18: set ACCT=/usr/adm/dpacct ! 19: breaksw ! 20: case *.op : ! 21: set PTR=darwin ! 22: set STAT=/usr/spool/opd/status ! 23: set ACCT=/usr/adm/opacct ! 24: breaksw ! 25: endsw ! 26: ! 27: echo "Formatting job." > $STAT ! 28: chmod a+r $STAT ! 29: ! 30: #Set defaults, then Parse the parameters: ! 31: set UPARM= ! 32: set FNAME=stdin ! 33: ! 34: while ( $#argv > 0 ) ! 35: switch ( "$argv[1]" ) ! 36: case -D* : # -D<uparms> from lpr -D option ! 37: set T=(`echo $argv[1] | sed -e 's/^-D//'`) ! 38: set UPARM=($UPARM $T) ! 39: breaksw ! 40: case -J* : # -J<filename> lpd supplies or from lpr -J opt ! 41: set FNAME=(`echo $argv[1] | sed -e 's/^-J//'`) ! 42: breaksw ! 43: case -h : # -h <host> lpd supplies ! 44: shift argv ! 45: set HOST=(`echo $argv[1] | sed -e 's/.berkeley.edu//'`) ! 46: breaksw ! 47: case -n : # -n <user> lpd supplies ! 48: shift argv ! 49: set USER=$argv[1] ! 50: breaksw ! 51: default: ! 52: breaksw ! 53: endsw ! 54: shift argv ! 55: end ! 56: ! 57: # Now get ready to scan any user-specified arguments. Mainly we must sort ! 58: # out which goto maha and which to xnsprint. The proper quotation for passing ! 59: # arguments looks something like this: ! 60: # lpr -Puxp -D'-c2 -h "This is a heading" -b "A Banner" -R' ! 61: ! 62: eval set argv = \( $UPARM \) ! 63: unset BANNER UNAME UPARM ! 64: set COPYS="1" UPARM ! 65: ! 66: while ( $#argv > 0 ) ! 67: switch ( "$argv[1]" ) ! 68: case -P: # -P <printer> (Invalid! Eat it.) ! 69: if ( $#argv > 1) shift argv ! 70: case -P*: # -P<printer> (Invalid! Eat it.) ! 71: breaksw ! 72: case -c: # -c <copies> (Pass to xnsprint) ! 73: if ( $#argv > 1) shift argv ! 74: set COPYS = ($argv[1]) ! 75: breaksw ! 76: case -c*: # -c<copies> (Pass to xnsprint) ! 77: set COPYS=(`echo $argv[1] | sed -e 's/^-c//'`) ! 78: breaksw ! 79: case -b: # -b <banner> (pass to xnsprint) ! 80: if ( $#argv > 1) shift argv ! 81: set BANNER = ($argv[1]) ! 82: breaksw ! 83: case -b*: # -b<banner> (Pass to xnsprint) ! 84: set BANNER =(`echo $argv[1] | sed -e 's/^-b//'`) ! 85: breaksw ! 86: case -n: # -n <name> (pass to xnsprint) ! 87: if ( $#argv > 1) shift argv ! 88: set UNAME = ($argv[1]) ! 89: breaksw ! 90: case -n*: # -n<name> (Pass to xnsprint) ! 91: set UNAME =(`echo $argv[1] | sed -e 's/^-n//'`) ! 92: breaksw ! 93: default: ! 94: # quote each argument to keep 'em from coming unglued. ! 95: set UPARM = ( $UPARM \"$argv[1]\" ) ! 96: endsw ! 97: shift argv ! 98: end ! 99: ! 100: set NAME=${USER}@${HOST} ! 101: ! 102: # Supply some defaults incase the user didn't. ! 103: if ( ! $?UNAME) set UNAME = $NAME ! 104: if ( ! $?BANNER) set BANNER = $FNAME ! 105: #umask 002 ! 106: ! 107: # Pass user arguments in the environment. maha will pair up quotes. ! 108: # (Otherwise would have to 'eval' maha cmd to get the csh to parse quotes.) ! 109: setenv MAHA "-h$FNAME -2 -r -t -fterminal/8 $UPARM" ! 110: ! 111: /usr/local/maha -o $TMP >& $ERR ! 112: ! 113: goto retry ! 114: retry: ! 115: if ( -e $TMP ) then ! 116: eval /usr/new/xnsprint -P $PTR -a$STAT -c \"$COPYS\" -n \"$UNAME\" -b \"$BANNER\" -q $TMP ! 117: switch ($status) ! 118: case 132: ! 119: echo xnsprint lost courier connection ! 120: goto retry ! 121: case 1: ! 122: case 2: ! 123: case 3: ! 124: echo Encountered network problems, trying again. > $STAT ! 125: goto retry ! 126: endsw ! 127: /usr/local/lib/ipcount -d -n $USER -h $HOST $ACCT < $TMP ! 128: else ! 129: echo "daemon: Can't find maha output; Skipping xnsprint" >> $ERR ! 130: endif ! 131: ! 132: if ( ! -z $ERR ) then ! 133: /usr/ucb/Mail -s "Maha Error Output" $NAME < $ERR ! 134: endif ! 135: ! 136: rm -f $TMP $ERR ! 137: exit 0 ! 138: ! 139: cleanup: ! 140: rm -f $TMP $ERR ! 141: exit 1
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.