Path: rde!uunet!digex.com!access.digex.net!tdarcos
From: tdarcos@access.digex.net (Paul Robinson)
Newsgroups: alt.sources
Subject: Here's a UQWK shell script
Date: 20 Aug 1993 16:22:03 GMT
Organization: Tansin A. Darcos & Company, Silver Spring, MD USA
Lines: 297
Message-ID: <252tnb$pe1@news1.digex.net>
NNTP-Posting-Host: access.digex.net
X-Newsreader: TIN [version 1.1 PL9]

I wrote the following script file to semi-automate using the 
UQWK reader.  You will have to fix it for your system, but it may
help.  The file name is 'darqwk'.

Paul Robinson
#!/bin/sh
#
# Shell script to automate packing and unpacking of files for
# the UQWK "door" for Unix news and mail < - > QWK packets.
#
# Paul Robinson, TDARCOS@ACCESS.DIGEX.NET
# April 24, 1993

# Who are we?  - These you need to change for your local system.
FILENAME=unixsys

# If you have changed the source to put your own system's name
# on it, then drop next line, but leave the $PACKET field so
# a user can set a different name if he wants 
PACKET="-i5,UNIXSYS"
REPLY=""

# Where should temporary files be stored for this user?
TEMPDIR="/tmp/QWKTEMP.$HOMENAME"
CAN="Control X"

# Where is Xmodem 
RX="/usr/local/bin/xyzmodem/rx $FILENAME.rep"
SX="/usr/local/bin/xyzmodem/sx $FILENAME.qwk"

# Where is Ymodem
RY="/usr/local/bin/xyzmodem/rb $FILENAME.rep"
SY="/usr/local/bin/xyzmodem/rb $FILENAME.qwk"

# Where is Zmodem
RZ="/usr/local/bin/xyzmodem/rz -b"
SZ="/usr/local/bin/xyzmodem/sz -b $FILENAME.qwk"

# Where is Kermit
RK="kermit -r -i $FILENAME.rep"
SK="kermit -s -i $FILENAME.qwk"

# Add other protocols
#RJ="/usr/local/bin/jmodem -r $FILENAME.rep"
#SJ="/usr/local/bin/jmodem -s $FILENAME.qwk"

# Preset vars - Just here for documentation.
FILETYPE=0
QWKREP=0
FILLER="      "
RECEIVE=""
SEND=""
ER="dl "
ES="ul "
PC=0

echo "QWK/REP Packet Transfer..."
echo "To accept the default choice [in brackets] just press ENTER."
echo "Press Control-C to abort."
while [ $QWKREP -eq 0 ]
do
    echo "Indicate which archiver your reply is in:"
    echo "    1:  No Reply"
    echo "  [ 2: .ZIP archive used for .REP packet ]"
    echo "    3: .ZOO archive used for .REP packet"
    echo "    4: .LHA archive used for .REP packet"
    echo "    5: .ARC archive used for .REP packet"
    echo "  "
#   echo "    6: .HPA archive used for .REP packet"
    echo "    7: tar/compress file for .REP packet"
    echo "    8: .ARJ archive used for .REP packet"

    echo -n " Select (1/[2]/3/4/5/7): "
    read QWKREP FILLER
    if [ -z "$QWKREP" ]
    then
    	QWKREP=2
    fi
    case $QWKREP in
     1|2|3|4|5|7|8) break;;
     6)   QWKREP=0;
          echo "HPACK not installed yet.  Choose another.";;
     *)   echo "Invalid type: $QWKREP";
          QWKREP=0;;
    esac
done

PC=0
if [ $QWKREP -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 "    5: Kermit"
    echo -n "Choose one (1/[2]/3/4/5): "
    read PC FILLER
    if [ -z "$PC" ]
    then
    	PC=2
    fi

# Note: Most common cancel is ^X, so that's the default.

    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";;
      5)  CAN="Control C" ; RECEIVE="$RK";
          PN="Kermit"; 
          ER="kermit -r -i $FILENAME";;
      *) echo "Invalid choice: "$PC ;;
    esac
done

echo -n "Creating scratch area, "
mkdir $TEMPDIR >/dev/null
chdir $TEMPDIR >/dev/null
echo -n "getting .newsrc"
cp $HOME/.newsrc .

# trigger file name guessing programs
case $FILETYPE in
    1) echo "; but no Packet is to be received." ;;
    *)  echo  ", and receiving $PN upload "; 
        echo " of file:  $FILENAME.rep ";
        echo  "Begin your upload, send several "$CAN" to abort.";      
        echo "$ER";
        $RECEIVE ;
        if [ !-f $FILENAME.rep ]
        then
         echo "Packet not received.  Bailing out.";
         exit 1;
        fi;;
esac
    
case $FILETYPE in
    2) unzip $FILENAME.rep;;
    3) zoo -e $FILENAME.rep;;
    4) lharc e $FILENAME.rep;;
    5) arc e $FILENAME.rep;;
#   6) hpack -x $FILENAME.rep;;
    7) mv $FILENAME.rep $FILENAME.tar.Z;
       uncompress $FILENAME.tar.Z;
       tar -xf $FILENAME.tar;
       rm $FILENAME.tar;; 
    8) unarj e $FILENAME.rep;;
esac

# get rid of upload archive
rm $FILENAME.rep >/dev/null
# setup the door file
echo -n "Creating a doorway and "

# Note: these are critical; the DOOR.ID file *must* have
# lines ending in CR/LF.  An "echo" that generates \r\n is needed
# here until the program itself creates the DOOR.ID file.
/usr/5bin/echo "DOOR=UQWK\r" >door.id
/usr/5bin/echo "SYSTEM=$SYSTEM\r" >>door.id
/usr/5bin/echo "CONTROLNAME=UQWK\r" >>door.id
/usr/5bin/echo "FIDOTAG=YES\r" >>door.id

echo "activating QWK processor.  Uploaded mail/news goes first. "
if [ -f $FILENAME.msg ]
then
  REPLY = "-R$FILENAME.msg";
fi  

uqwk +m "$REPLY" "$PACKET" -H. $1 $2 $3 $4 $5 $6 $7

# Messages are uploaded; discard them
rm $FILENAME.msg 

while [ $FILETYPE -eq 0 ]
do
    echo "Select packet ($FILENAME.qwk) file type: "
    echo "    1: Do not pack or download"
    echo "  [ 2: .ZIP archive used for .qwk packet ]"
    echo "    3: .ZOO archive used for .qwk packet"
    echo "    4: .LHA archive used for .qwk packet"
    echo "    5: .ARC archive used for .qwk packet"
    echo "    6: .HPA archive used for .qwk packet"
    echo "    7: tar/compress used for .qwk packet"
    echo -n " Select (1/[2]/3/4/5/6): "
    read QWKREP FILLER
    if [ -z "$QWKREP" ]
    then
    	QWKREP=2
    fi
    case $QWKREP in
     1|2|3|4|5|6|7) break;;
     *)   echo "Invalid type: "$QWKREP;
    	  QWKREP=0;;
    esac
done

case $QWKREP in
    2) zip -m $FILENAME.qwk *;;
    3) zoo -m $FILENAME.qwk *;;
    4) lharc am $FILENAME.qwk *;;
    5) arc am $FILENAME.qwk *;;
#   6) hpack -m $FILENAME.qwk *;;
    7) tar -mf $FILENAME.tar *;
       compress $FILENAME.tar;
       rm $FILENAME.tar;
       mv $FILENAME.tar.Z $FILENAME.qwk;;
esac

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

CAN="Control X"
while [ $PC -eq 0 ]
do
    echo "Select download method: "
    echo "    1: Do not download"
    echo "  [ 2: Zmodem ]"
    echo "    3: Xmodem"
    echo "    4: Ymodem"
    echo "    5: Kermit"
    echo -n "Enter choice (1/[2]/3/4/5): "
    read PC FILLER
    case $PC in
   
# Note: Most common cancel is ^X, so that's the default.

    case $PC in
      1)  break;;
      2)  PN="Zmodem";      SEND="$SZ";
          ES="";;
      3)  PN="Xmodem";      SEND="$SX";
          ES="sx $FILENAME.qwk";;
      4)  PN="Ymodem";      SEND="$SY"; 
          ES="sb $FILENAME.qwk";;
      5)  CAN="Control C" ; SEND="$RK";
          PN="Kermit"; 
          ES="kermit -s -i $FILENAME";;
      *)  PC=0;
          echo "Invalid choice: "$PC ;;
    esac

done

# trigger file name guessing programs
case $FILETYPE in
    1)	echo -n "; ";;
    *)  echo  "Prepare to receive $PN download "; 
        echo " of file:  $FILENAME.qwk ";
        echo  "Begin your download, send several "$CAN" to abort.";      
        echo "$ES";
        $SEND;
esac
    
while :
do
    echo -n "Update .newsrc ([y]/n)? "
    read ANS FILLER
    if [ -z "$ANS" ]
    then
        ANS=y
    fi
    case $ANS in
      Y*|y*) cp .newsrc $HOME ;;
      N*|n*) break;;
      *)   echo "Please answer y or n."
    esac
done    

# if no download, don't expunge
if [ $PC -eq 1]
 then
exit 0
fi

# expunge .newsrc, qwk and msg files, and remove temp dir
rm .*
rm *
cd 
rmdir $TEMPDIR
exit 0



  
