uuq.sh   [plain text]


#!/bin/sh
#
# uuq - a script to examine and display the Taylor spool directory contents.
#       note - uses the uuname script or similar functionality.
# Zacharias Beckman

SPOOLDIR="/usr/spool/uucp"
SYSTEMS=`uuname`
TMPFILE="/tmp/uuq.tmp"
FORSYSTEM=""
DELETE=""
LONG=0
SINGLE=0

while [ "$1" != "" ]
do
  case $1 in
    -l) LONG=1
        shift
        ;;
    -s) shift
        SYSTEMS=$argv[1]
        SINGLE=1
        shift
        ;;
    -d) shift
        DELETE=$argv[1]
        shift
        ;;
    -h) echo "uuq: usage uuq [options]"
        echo "     -l    long listing (may take a while)"
        echo "     -s n  run uuq only for system n"
        echo "     -d n  delete item n from the queue (required -s)"
        exit 1
            ;;
        *)  echo "uuq: invalid option"
            exit 1
            ;;
  esac
done

if [ "${DELETE}" != "" ] && [ ${SINGLE} != 1 ] ; then
  echo "uuq: you must specify a system to delete the job from:"
  echo "     uuq -s wizard -d D.0004"
  exit 1
fi

cd ${SPOOLDIR}

# if we are deleting a job, then do that first and exit without showing
# any other queue information

if [ "${DELETE}" != "" ] ; then
  if [ -d ${SYSTEMS}/D. ] ; then
    cd ${SYSTEMS}/C.
    PACKET=${DELETE}
    if [ -f ${PACKET} ] ; then
      EXFILE=../D.X/`awk '{if (NR == 2) print $2}' ${PACKET}`
      DFILE=../D./`awk '{if (NR == 1) print $2}' ${PACKET}`
      echo "deleting job ${PACKET}"
      rm ${PACKET}
      rm ${EXFILE}
      rm ${DFILE}
    else
      echo "uuq: job ${PACKET} not found"
      exit 1
    fi
  else
    echo "uuq: system ${SYSTEMS} not found"
  fi

  exit 1
fi

# use the 'uuname' script to obtain a list of systems for the 'sys' file,
# then step through each directory looking for appropriate information.

if [ ${LONG} -gt 0 ] ; then
  echo "system"
  echo -n "job#    act size       command"
fi

for DESTSYSTEM in ${SYSTEMS} ; do
  # if there is an existing directory for the named system, cd into it and
  # "do the right thing."

  if [ -d ${DESTSYSTEM} ] ; then
    cd ${DESTSYSTEM}/C.

    PACKET=`ls`

    if [ "${PACKET}" != "" ] ; then
      # if a long listing has been required, extra information is printed

      echo ""
      echo "${DESTSYSTEM}:"

      # now each packet must be examined and appropriate information is
      # printed for this system

      if [ ${LONG} -gt 0 ] ; then
        for PACKET in * ; do
          EXFILE=../D.X/`awk '{if (NR == 2) print $2}' ${PACKET}`
          DFILE=../D./`awk '{if (NR == 1) print $2}' ${PACKET}`
          echo -n "${PACKET} " > ${TMPFILE}
          gawk '{if (NR == 2) printf(" %s  ", $1);}' ${PACKET} >> ${TMPFILE}
          ls -l ${DFILE}|awk '{printf("%-10d ", $4)}' >> ${TMPFILE}
          if [ -f ${EXFILE} ] ; then
            gawk '/U / {printf("(%s)", $2);}\
                  /C / {print substr($0,2,length($0));}' ${EXFILE} >> ${TMPFILE}
          else
            echo "---" >> ${TMPFILE}
          fi

          cat ${TMPFILE}
        done
        cat ${SPOOLDIR}/.Status/${DESTSYSTEM}
      else
        ls
      fi
    fi
  fi

  cd ${SPOOLDIR}
done