#!/bin/sh
# Shell script front end interface for the Unix uqwk program
# This script evolved from a script written by Paul Robinson,
# however, I have made extensive modifications/improvements
# to the overall script, and it only remotely resembles the
# original script.
#
# Pete Fanning
# August 21, 1994

# Script version
VERS="v1.2"

# filename used for packets
FILENAME=execinet

# Overide Exec-PC's conflicting packet name
# For some reason, there's matches the BBS QWK name, causing
# many QWK users headaches.
PACKET="-i0,EXECINET"

# default replies (SOUP format)
REPLY="-Rreplies"

# tempdir used for packet compilation, avoiding quota limits
TEMPDIR="/tmp/"$LOGNAME

CAN="Control X"

# define protocols
RX="/usr/local/bin/rx $FILENAME.rep"
SX="/usr/local/bin/sx "
RY="/usr/local/bin/rb $FILENAME.rep"
SY="/usr/local/bin/sb "
RZ="/usr/local/bin/rz "
SZ="/usr/local/bin/sz "

# set variables
CHOICE=0
ENGMENU=0
ENGREP=0
FILLER=" "
RECEIVE=""
SEND=""
ER="dl "
ES="ul "
UQARG=""
PC=0

# Begin UDFs....

# Simple little ditty to inform user of existing packet
pktrdy () {
  if [ -f $TEMPDIR/$FILENAME.qwk ]
  then
      echo "YOU HAVE A PACKET READY FOR DOWNLOAD!!!"
      echo " "
  fi
  if [ -f $TEMPDIR/$FILENAME.zip ]
  then
      echo "YOU HAVE A PACKET READY FOR DOWNLOAD!!!"
      echo " "
  fi
}

# User choice of what to gather
typsel () {
  clear
  echo "$FMT Packet Inclusion Menu..."
  echo "For the default choice [in brackets], simply press ENTER!"
  echo "Press Control-C to abort."
  GETTYP=0
  while [ $GETTYP -eq 0 ]
  do
      echo " "
      echo "Choose what you want to add to this packet:"
      echo "  [ 1)  Select both Usenet News AND Personal Email ]"
      echo "    2)  Select only Usenet News for this run"
      echo "    3)  Select only Personal Email for this run"
      echo "    4)  Return to Main Menu"
      echo " "
      echo -n "Select ([1]/2/3/4): "
      read GETTYP FILLER
      if [ -z "$GETTYP" ]
      then
          GETTYP=1
      fi
      case $GETTYP in
       1) UQTYP="+n +m"; break;;
       2) UQTYP="+n -m"; break;;
       3) UQTYP="-n +m"; break;;
       4) return 1;;
       *)   echo "Invalid Choice: $GETTYP";
            GETTYP=0;;
      esac
  done
}

# Additional switch selection
addsw () {
  clear
  echo "$FMT Packet Size Selection..."
  echo "For the default choice [in brackets], simply press ENTER!"
  echo "Press Control-C to abort."
  PKTSIZE=0
  while [ $PKTSIZE -eq 0 ]
  do
      echo " "
      echo "Indicate how big you want your $FMT packet:"
      echo "  [ 1)  Default size (4000 blocks or 512K uncompressed) ]"
      echo "    2)  8000 blocks (1 meg uncompressed)"
      echo "    3)  12000 blocks (1.5 meg uncompressed)"
      echo "    4)  User-Provided block size"
      echo "    5)  Unlimited packet size"
      echo "    6)  Return to Main Menu"
      echo " "
      echo -n "Select ([1]/2/3/4/5/6): "
      read PKTSIZE FILLER
      if [ -z "$PKTSIZE" ]
      then
          PKTSIZE=1
      fi
      case $PKTSIZE in
       1) UQARG=""; break;;
       2) UQARG="-B8000"; break;;
       3) UQARG="-B12000"; break;;
       4) echo " ";
          echo -n "Enter desired block size: ";
          read BLKSIZE FILLER;
          UQARG="-B"$BLKSIZE;
          break;;
       5) UQARG="-B0"; break;;
       6) return 1;;
       *)   echo "Invalid Choice: $PKTSIZE";
            PKTSIZE=0;;
      esac
  done

  clear
  echo "$FMT Additional Switch Selection..."
  echo "For the default choice [in brackets], simply press ENTER!"
  echo "Press Control-C to abort."
  SWSEL=0
  while [ $SWSEL -eq 0 ]
  do
      echo " "
      echo "Select Additional Switches as desired:"
      echo "    1)  Robomail-helpful switches for QWK packets (-l25 +e)"
      echo "    2)  Activate Bluewave Kludge for QWK packets (+W)"
      echo "    3)  Operate in EXPERT QWK mode (+X)"
      echo "        NOTE: This switch is for folks who know what they're"
      echo "              doing.  All QWK header info is ignored, and"
      echo "              header info is taken from the body of the"
      echo "              messages.  See RFC's 822 and 1036 for details"
      echo "              on how to construct a mail/usenet header!"
      echo "  [ 4)  No more options - Continue on ]"
      echo "    5)  Return to Main Menu"
      echo " "
      echo "    Current additional switches: ["$UQARG" ]"
      echo " "
      echo -n "Select (1/2/3/[4]/5): "
      read SWSEL FILLER
      if [ -z "$SWSEL" ]
      then
          SWSEL=4
      fi
      case $SWSEL in
       1) UQARG=UQARG" -l25 +e";;
       2) UQARG=UQARG" +W";;
       3) UQARG=UQARG" +X";;
       4) break;;
       5) return 1;;
       *)   echo "Invalid Choice: $SWSEL";
            SWSEL=0;;
      esac
      SWSEL=0
  done
}

# background function that does all the work
bgget () {
  echo "Backing up .newsrc file to .newsrc.b4..."
  cp $HOME/.newsrc $HOME/.newsrc.b4

  echo "Backing up mailbox..."
  rm -f /usr/mail/$LOGNAME~
  cp /usr/mail/$LOGNAME /usr/mail/$LOGNAME~
  chmod 700 /usr/mail/$LOGNAME~

  echo "Creating temporary work area..."
  mkdir $TEMPDIR 2>/dev/null
  chdir $TEMPDIR 2>/dev/null

  echo "Getting current .newsrc..."
  cp $HOME/.newsrc .

  echo "Activating $FMT processor....."
  if [ "$FMT" = "QWK" ]
  then
      echo "DOOR=UQWK\r" >door.id
      echo "SYSTEM=$SYSTEM\r" >>door.id
      echo "CONTROLNAME=UQWK\r" >>door.id
      echo "FIDOTAG=YES\r" >>door.id

      uqwk $UQARG $UQTYP $PACKET -H. $1 $2 $3 $4 $5 $6 $7
  fi

  if [ "$FMT" = "SOUP" ]
  then
      uqwk $UQARG $UQTYP +L -H. $1 $2 $3 $4 $5 $6 $7
  fi

  echo "Zipping up the $FMT packet for download..."
  zip -m $FILENAME.$EXT *
  echo "USENET/Mail $FMT Packet creation completed..."

  exit 0
}

# main packet gathering engine (BOTH QWK and SOUP)
engine () {
  clear
  echo "$FMT $EXT/rep Packet Menu..."
  echo "For the default choice [in brackets], simply press ENTER!"
  echo "Press Control-C to abort."
  ENGMENU=0
  while [ $ENGMENU -eq 0 ]
  do
      echo " "
      echo "Choose the action you wish to perform below:"
      echo " [ 1) Download a $FMT Packet Interactively ]"
      echo "   2) Upload a $FMT Reply Packet (NO DOWNLOAD)"
      echo "   3) Background Packet Gathering Menu"
      echo "   4) Return to Main Menu"
      echo " "
      echo -n "Choose ([1]/2/3/4): "
      read ENGMENU FILLER
      if [ -z "$ENGMENU" ]
      then
          ENGMENU=1
      fi
      case $ENGMENU in
       1|2|3|4) break;;
       *)    echo "Invalid Choice: $ENGMENU";
             ENGMENU=0;;
      esac
  done

  if [ $ENGMENU -eq 4 ]
  then
      return
  fi

  if [ $ENGMENU -eq 1 ]
  then
      #insert packet check here
      if [ -f $TEMPDIR/$FILENAME.$EXT ]
      then
          echo " "
          echo "There is an existing packet available for download."
          echo "Go into the Background processing menu and select"
          echo "Option 3 - Download previously created packet."
          echo " "
          echo "Press ENTER to continue..."
          read DUMMY FILLER
          return
      fi

      typsel
      if [ $? -gt 0 ]
      then
          return
      fi

      addsw
      if [ $? -gt 0 ]
      then
          return
      fi

      clear
      echo "$FMT $EXT/rep Packet Transfer..."
      echo "For the default choice [in brackets], simply press ENTER!"
      echo "Press Control-C to abort."
      ENGREP=0
      while [ $ENGREP -eq 0 ]
      do
          echo " "
          echo "Indicate which format your reply packet is in:"
          echo "    1)  No Reply"
          echo "  [ 2)  ZIP archive used for $FMT REP packet ]"
          echo "    3)  Return to Main Menu"
          echo " "
          echo -n "Select (1/[2]/3): "
          read ENGREP FILLER
          if [ -z "$ENGREP" ]
          then
              ENGREP=2
          fi
          case $ENGREP in
           1|2|3) break;;
           *)   echo "Invalid Choice: $ENGREP";
                ENGREP=0;;
          esac
      done

      if [ $ENGREP -eq 3 ]
      then
          return
      fi

      PC=0
      if [ $ENGREP -eq 1 ]
      then
          PC=1
      fi

      while [ $PC -eq 0 ]
      do
          PC=0
          echo "Select upload protocol: "
          echo "    1) Packet is already uploaded"
          echo "  [ 2) Zmodem ]"
          echo "    3) Xmodem"
          echo "    4) Ymodem"
          echo " "
          echo -n "Choose one (1/[2]/3/4): "
          read PC FILLER
          if [ -z "$PC" ]
          then
              PC=2
          fi

          case $PC in
            1)  break;;
            2)  PN="Zmodem";
                RECEIVE="$RZ";
                ER="";;
            3)  PN="Xmodem";
                RECEIVE="$RX";
                ER="rx $FILENAME.rep";;
            4)  PN="Ymodem";
                RECEIVE="$RY";
                ER="rb $FILENAME.rep";;
            *) echo "Invalid choice: "$PC ;;
          esac
      done

      clear
      echo "Backing up .newsrc file...."
      cp $HOME/.newsrc $HOME/.newsrc.b4

      echo "Creating work area...."
      mkdir $TEMPDIR 2>/dev/null

      echo "Backing up your mailbox...."
      rm -f /usr/mail/$LOGNAME~ 2>/dev/null
      cp /usr/mail/$LOGNAME /usr/mail/$LOGNAME~ 2>/dev/null
      chmod 700 /usr/mail/$LOGNAME~ 2>/dev/null

      echo "Making work area the active area...."
      chdir $TEMPDIR 2>/dev/null

      echo "Copying .newsrc to work area...."
      cp $HOME/.newsrc .

      case $ENGREP in
          1)  echo "No incoming packet..." ;;
          *)  echo  "Preparing for $PN upload....";
              echo  "Begin your upload, send several "$CAN" to abort.";
              echo  "$ER";
              $RECEIVE ;
              if [ -f $FILENAME.rep ]
              then
                  echo "";
                  if [ "$FMT" = "QWK" ]
                  then
                      unzip $FILENAME.rep;
                  else
                      unzip -U $FILENAME.rep;
                  fi;
                  rm $FILENAME.rep 2>/dev/null;
              else
                  echo "Packet not received.  Bailing out.";
                  exit 1;
              fi;;
      esac

      echo "Activating $FMT processor....."
      if [ "$FMT" = "QWK" ]
      then
          echo "DOOR=UQWK\r" >door.id
          echo "SYSTEM=$SYSTEM\r" >>door.id
          echo "CONTROLNAME=UQWK\r" >>door.id
          echo "FIDOTAG=YES\r" >>door.id

          REPLY="-R$FILENAME.msg"
          if [ -f $FILENAME.msg ]
          then
              uqwk $UQARG $UQTYP $REPLY $PACKET -H. $1 $2 $3 $4 $5 $6 $7
              rm $FILENAME.msg 2>/dev/null
          else
              uqwk $UQARG $UQTYP $PACKET -H. $1 $2 $3 $4 $5 $6 $7
          fi
      fi

      if [ "$FMT" = "SOUP" ]
      then
          if [ -f REPLIES ]
          then
              REPLY="-RREPLIES"
              uqwk $UQARG $UQTYP +L $REPLY -H. $1 $2 $3 $4 $5 $6 $7
              rm REPLIES 2>/dev/null
              rm NEWS.MSG 2>/dev/null
              rm MAIL.MSG 2>/dev/null
          else
              uqwk $UQARG $UQTYP +L -H. $1 $2 $3 $4 $5 $6 $7
          fi
      fi

      ENGREP=0
      while [ $ENGREP -eq 0 ]
      do
          echo " "
          echo "Select packet ($FILENAME.$EXT) file type: "
          echo "    1) Do not pack or download"
          echo "  [ 2) ZIP archive used for .$EXT packet ]"
          echo " "
          echo -n "Select (1/[2]): "
          read ENGREP FILLER
          if [ -z "$ENGREP" ]
          then
              ENGREP=2
          fi
          case $ENGREP in
           1|2|3) break;;
           *)   echo "Invalid type: "$ENGREP;
                ENGREP=0;;
          esac
      done

      case $ENGREP in
          2) zip -m $FILENAME.$EXT *;;
      esac

      PC=0
      if [ $ENGREP -eq 1 ]
      then
          PC=1
      fi

      while [ $PC -eq 0 ]
      do
          echo " "
          echo "Select download method: "
          echo "    1) Do not download"
          echo "  [ 2) Zmodem ]"
          echo "    3) Xmodem"
          echo "    4) Ymodem"
          echo " "
          echo -n "Enter choice (1/[2]/3/4): "
          read PC FILLER

          if [ -z "$PC" ]
          then
              PC=2
          fi

          case $PC in
            1)  break;;
            2)  PN="Zmodem";
                SEND="$SZ $FILENAME.$EXT";
                ES="";;
            3)  PN="Xmodem";
                SEND="$SX $FILENAME.$EXT";
                ES="sx $FILENAME.$EXT";;
            4)  PN="Ymodem";
                SEND="$SY $FILENAME.$EXT";
                ES="sb $FILENAME.$EXT";;
            *)  PC=0;
                echo "Invalid choice: "$PC ;;
          esac
      done

      case $PC in
          1)  echo "";;
          *)  echo  "Prepare to receive $PN download ";
              echo " of file:  $FILENAME.$EXT ";
              echo  "Begin your download, send several "$CAN" to abort.";
              echo "$ES";
              $SEND;;
      esac

      if [ "$UQTYP" != "-n +m" ]
      then
        while :
        do
            echo " "
            echo "If your download was successful, then answer 'y' below!"
            echo -n "Update .newsrc ([y]/n)? "
            read ANS FILLER
            if [ -z "$ANS" ]
            then
                ANS=y
            fi
            case $ANS in
              Y*|y*) cp .newsrc $HOME;
                     cp .newsrc $HOME/.newsrc.af;
                     rm -fr $TEMPDIR 2>/dev/null;
                     break;;
              N*|n*) break;;
              *)   echo "Please answer y or n."
            esac
        done
      fi

      if [ $PC -eq 1 ]
      then
          return
      fi
      chdir
  fi

  #Upload only selection
  if [ $ENGMENU -eq 2 ]
  then
      clear
      echo "$FMT Upload Packet Transfer..."
      echo "For the default choice [in brackets], simply press ENTER!"
      echo "Press Control-C to abort."
      ENGREP=2
      PC=0
      while [ $PC -eq 0 ]
      do
          PC=0
          echo " "
          echo "Select upload protocol: "
          echo "    1) Packet is already uploaded"
          echo "  [ 2) Zmodem ]"
          echo "    3) Xmodem"
          echo "    4) Ymodem"
          echo " "
          echo -n "Choose one (1/[2]/3/4): "
          read PC FILLER
          if [ -z "$PC" ]
          then
              PC=2
          fi

          case $PC in
            1)  break;;
            2)  PN="Zmodem";
                RECEIVE="$RZ";
                ER="";;
            3)  PN="Xmodem";
                RECEIVE="$RX";
                ER="rx $FILENAME.rep";;
            4)  PN="Ymodem";
                RECEIVE="$RY";
                ER="rb $FILENAME.rep";;
            *) echo "Invalid choice: "$PC ;;
          esac
      done

      echo  "Preparing for $PN upload...."
      echo  "Begin your upload, send several "$CAN" to abort."
      echo  "$ER"
      $RECEIVE
      if [ -f $FILENAME.rep ]
      then
          echo ""
      else
          echo "Packet not received.  Bailing out."
          exit 1
      fi

      if [ "$FMT" = "QWK" ]
      then
          unzip $FILENAME.rep
      else
          unzip -U $FILENAME.rep
      fi
      rm $FILENAME.rep 2>/dev/null

      echo "Activating $FMT processor....."
      if [ "$FMT" = "QWK" ]
      then
          REPLY="-R$FILENAME.msg"
          if [ -f $FILENAME.msg ]
          then
              uqwk $UQARG -n -m $REPLY $PACKET -H. $1 $2 $3 $4 $5 $6 $7
              rm $FILENAME.msg 2>/dev/null
              rm messages.dat 2>/dev/null
          else
              echo "No replies found!!!!"
              exit 1
          fi
      fi

      if [ "$FMT" = "SOUP" ]
      then
          REPLY="-RREPLIES"
          if [ -f REPLIES ]
          then
              uqwk $UQARG -n -m +L $REPLY -H. $1 $2 $3 $4 $5 $6 $7
              rm REPLIES 2>/dev/null
              rm NEWS.MSG 2>/dev/null
              rm MAIL.MSG 2>/dev/null
          else
              echo "No replies found!!!!"
              exit 1
          fi
      fi
  fi

  #Background process creation/execution
  BGMENU=0
  if [ $ENGMENU -eq 3 ]
  then
      clear
      echo "$FMT Background Processing Menu..."
      echo "For the default choice [in brackets], simply press ENTER!"
      echo "Press Control-C to abort."
      while [ $BGMENU -eq 0 ]
      do
          echo " "
          pktrdy
          echo "Choose the action you wish to perform below:"
          echo " [ 1) Start a Background $FMT Packet Build ]"
          echo "   2) View the logfile from previous session"
          echo "   3) Download a previously created $FMT packet"
          echo "   4) Return to Main Menu"
          echo " "
          echo -n "Choose ([1]/2/3/4): "
          read BGMENU FILLER
          if [ -z "$BGMENU" ]
          then
              BGMENU=1
          fi
          case $BGMENU in
           1) echo "Background Operation Selected";;
           2) clear;
              if [ -f packlog ]
              then
                  pg packlog;
              else
                  echo " ";
                  echo "Logfile not found!";
                  echo " ";
                  echo "Press ENTER to continue...";
                  read DUMMY FILLER;
              fi;
              BGMENU=0;;
           3) echo "Preparing to download packet...";;
           4) return;;
           *)    echo "Invalid Choice: $BGMENU";
                 BGMENU=0;;
          esac

          if [ $BGMENU -eq 1 ]
          then
              # insert packet check here
              #
              if [ -f $TEMPDIR/$FILENAME.$EXT ]
              then
                 echo " "
                 echo "There is an existing packet available for download."
                 echo "Packet Build cancelled...."
                 echo " "
                 echo "Press ENTER to continue..."
                 read DUMMY FILLER
                 return
              fi
              # Insert additional switch menu here
              #
              typsel
              if [ $? -gt 0 ]
              then
                  return
              fi

              addsw
              if [ $? -gt 0 ]
              then
                  return
              fi

              if [ -f packlog ]
              then
                  rm packlog 2>/dev/null
              fi

              nohup $0 bgpack $FMT $EXT $UQARG $UQTYP > packlog&
              echo " "
              echo -n "A background process has started.  You can now"
              echo " log out or"
              echo -n "do whatever you wish next on the system. "
              echo " Activity for the"
              echo -n "background process is being logged to the file"
              echo " 'packlog'."
              echo " "
              echo -n "REVIEW THAT FILE BEFORE YOU ATTEMPT TO DOWNLOAD THE"
              echo " PACKET!"
              exit 0
          fi

          if [ $BGMENU -eq 3 ]
          then
              if [ -f $TEMPDIR/$FILENAME.$EXT ]
              then
                  chdir $TEMPDIR 2>/dev/null

                  PC=0
                  while [ $PC -eq 0 ]
                  do
                      echo " "
                      echo "Select download method: "
                      echo "    1) Do not download"
                      echo "  [ 2) Zmodem ]"
                      echo "    3) Xmodem"
                      echo "    4) Ymodem"
                      echo " "
                      echo -n "Enter choice (1/[2]/3/4): "
                      read PC FILLER

                      if [ -z "$PC" ]
                      then
                          PC=2
                      fi

                      case $PC in
                        1)  break;;
                        2)  PN="Zmodem";
                            SEND="$SZ $FILENAME.$EXT";
                            ES="";;
                        3)  PN="Xmodem";
                            SEND="$SX $FILENAME.$EXT";
                            ES="sx $FILENAME.$EXT";;
                        4)  PN="Ymodem";
                            SEND="$SY $FILENAME.$EXT";
                            ES="sb $FILENAME.$EXT";;
                        *)  PC=0;
                            echo "Invalid choice: "$PC ;;
                      esac

                  done

                  case $PC in
                      1)  echo "";;
                      *)  echo  "Prepare to receive $PN download ";
                          echo " of file:  $FILENAME.$EXT ";
                          echo -n "Begin your download, send several "$CAN
                          echo " to abort";
                          echo "$ES";
                          $SEND;;
                  esac

                  if [ "$UQTYP" != "-n +m" ]
                  then
                    while :
                    do
                        echo " "
                        echo -n "If your download was successful, then answer"
                        echo " 'y' below!"
                        echo -n "Update .newsrc ([y]/n)? "
                        read ANS FILLER
                        if [ -z "$ANS" ]
                        then
                            ANS=y
                        fi
                        case $ANS in
                          Y*|y*) cp .newsrc $HOME;
                                 cp .newsrc $HOME/.newsrc.af;
                                 rm -fr $TEMPDIR 2>/dev/null;
                                 break;;
                          N*|n*) break;;
                          *)   echo "Please answer y or n."
                        esac
                    done
                  fi

                  if [ $PC -eq 1 ]
                  then
                      return
                  fi
                  chdir
              else
                  echo " "
                  echo "No downloadable packet detected!!"
                  echo " "
                  echo "Press ENTER to continue..."
                  read DUMMY FILLER
                  return
              fi
          fi
      done
  fi
}

# QWK formatted packets selected
qwkmnu () {
  FMT="QWK"
  EXT="qwk"
  engine
}

# SOUP formatted packets selected
soupmnu () {
  FMT="SOUP"
  EXT="zip"
  engine
}

# Safe-recovery menu
safemnu () {
  clear
  echo "$FMT Recovery Menu..."
  echo "For the default choice [in brackets], simply press ENTER!"
  echo "Press Control-C to abort."
  RECMENU=0
  while [ $RECMENU -eq 0 ]
  do
      echo " "
      echo "Choose the action you wish to perform below:"
      echo "   1) Restore .newsrc from BEFORE last successful download"
      echo "   2) Restore .newsrc from AFTER last successful download"
      echo "   3) Restore mailbox from backup mailbox"
      echo "      NOTE: Be careful here.  You may have received new"
      echo "            mail since your mailbox was last backed up in"
      echo "            the last packet compilation."
      echo "   4) Return to Main Menu"
      echo " "
      echo -n "Choose ([1]/2/3/4): "
      read RECMENU FILLER
      if [ -z "$RECMENU" ]
      then
          RECMENU=0
      fi
      case $RECMENU in
       1|2|3|4) break;;
       *)    echo "Invalid Choice: $RECMENU";
             RECMENU=0;;
      esac
  done

  if [ $RECMENU -eq 4 ]
  then
      return
  fi

  if [ $RECMENU -eq 1 ]
  then
      echo " "
      echo "Your .newsrc will be restored from before the last successful"
      echo "packet compilation, effectively restoring your pointers to"
      echo "the point before you gathered your last packet."
      echo " "
      echo "Why do this?  Well, you may have inadvertently aborted"
      echo "uqwk, or have been disconnected while uqwk was running, or"
      echo "had your online session hang when in the middle of uqwk."
      echo "This option gives you the insurance you need in case something"
      echo "went wrong."

      while :
      do
          echo " "
          echo -n "Are you sure you want to do this? "
          read ANS FILLER
          if [ -z "$ANS" ]
          then
              ANS=n
          fi
          case $ANS in
            Y*|y*) cp .newsrc.b4 .newsrc;
                   break;;
            N*|n*) echo ".newsrc not restored";
                   sleep 5;
                   break;;
            *)   echo "Please answer y or n."
          esac
      done
  fi

  if [ $RECMENU -eq 2 ]
  then
      echo " "
      echo "Your .newsrc will be restored from AFTER the last successful"
      echo "packet compilation, effectively restoring your pointers to"
      echo "the point AFTER you gathered your last packet."
      echo " "
      echo "Why do this?  Well, you might have deleted your .newsrc by"
      echo "accident, or made changes to it you want to reverse, but you"
      echo "don't want your pointers changed since the last successfull"
      echo "packet compilation."

      while :
      do
          echo " "
          echo -n "Are you sure you want to do this? "
          read ANS FILLER
          if [ -z "$ANS" ]
          then
              ANS=n
          fi
          case $ANS in
            Y*|y*) cp .newsrc.af .newsrc;
                   break;;
            N*|n*) echo ".newsrc not restored";
                   sleep 5;
                   break;;
            *)   echo "Please answer y or n."
          esac
      done
  fi

  if [ $RECMENU -eq 3 ]
  then
      echo " "
      echo "This option will restore your personal mailbox from a backup"
      echo "that was made since the last run of this script.  You must"
      echo "be careful in doing this, since you may have received new"
      echo "mail since your mailfile was last backed up.  If you are"
      echo "absolutely sure you want to do this, answer 'y' below!"

      while :
      do
          echo " "
          echo -n "Are you sure you want to do this? "
          read ANS FILLER
          if [ -z "$ANS" ]
          then
              ANS=n
          fi
          case $ANS in
            Y*|y*) cp /usr/mail/$LOGNAME~ /usr/mail/$LOGNAME;
                   break;;
            N*|n*) echo "mailfile not restored";
                   sleep 5;
                   break;;
            *)   echo "Please answer y or n."
          esac
      done
  fi
}

if [ $# -eq 0 ]
then
    echo "Foreground Mode."
else
    if [ "$1" = "bgpack" ]
    then
        FMT="$2"
        EXT="$3"
        UQARG="$4"
        UQTYP="$5"
        bgget
        exit 0
    else
        echo "Foreground Mode."
    fi
fi

while [ $CHOICE -eq 0 ]
do
    clear
    echo "Pete's All-Around UQWK Interface $VERS"
    echo "For the default choice [in brackets], simply press ENTER!"
    echo "Press Control-C to abort."
    echo " "
    pktrdy
    echo "   1) QWK Packets   - Select if you prefer to work with QWK"
    echo " [ 2) SOUP Packets  - Select if SOUP is your preference ]"
    echo "   3) Failsafe Menu - This menu allows you to restore a"
    echo "                      previously saved .newsrc or mailbox"
    echo "                      after a failed packet download."
    echo "   4) Quit"
    echo " "
    echo -n "Choose (1/[2]/3/4): "
    read CHOICE FILLER

    if [ -z "$CHOICE" ]
    then
        CHOICE=2
    fi

    case $CHOICE in
     1)   qwkmnu;;
     2)   soupmnu;;
     3)   safemnu;;
     4)   break;;
     *)   echo "Invalid Menu Selection: $CHOICE";
          CHOICE=0;;
    esac
    CHOICE=0
done
clear
echo "Thanks for using Pete's All-Around UQWK Interface $VERS!!"
exit 0
