Provided by: uqwk_2.21-15_amd64 bug

NAME

       uqwk - Collect news & mail messages for offline reading

SYNOPSIS

       uqwk [a-plethora-of-options]

DESCRIPTION

       uqwk is a program which collects all a user's unread news and/or mail, and formats it into
       a packet for offline reading, saving telephone and connect charges.  Simple Offline Usenet
       Packet  (SOUP), ZipNews, and the deprecated QWK packet formats are supported.  Mail can be
       read from classic Unix mbox format mail files, MMDF  mail  files,  or  maildir  mailboxes.
       News is either read directly from a locally available file system, or obtained using NNTP.

       uqwk also accepts reply packets, so replies can be mailed or posted, depending whether the
       message is marked private (email) or public (news).

       uqwk also supports a small offline command language, so the contents of the user's .newsrc
       file can be viewed and manipulated offline.

GENERAL OPTIONS

       Note  that  many  varieties  of  uqwk can be built: not all options are applicable to (and
       available) in every one.  Specifically, the NNTP-related options  are  only  available  in
       uqwk  builds  using  NNTP,  the options related to reading news directly from disk only to
       non-NNTP builds.  Furthermore, the options concerning scoring and NNTP authentication  are
       only present if support for scoring, resp. NNTP authentication, was compiled in.

       -p     Print  options.   uqwk  will  show  its  version  number  and the options that were
              compiled in, will examine all appropriate environment variables  and  command  line
              options,  print  the  values of all run-time options, then exit.  This is useful to
              see what uqwk thinks it is going to do before you actually run it (and  what  setup
              it is offering).

       -v     identical to "-p".

       -?     same as "-v".

       +r     Read  only.   Normally,  uqwk  will empty the user's mail spool file and update the
              user's .newsrc file to reflect the fact that mail and news have been read.  If this
              switch is specified, uqwk will not touch these files.  This is useful for testing.

       -r     Do not execute in read-only mode.  This is the default.

       +m     Do  mail.   uqwk will process all mail in the user's mail spool file and convert it
              into an offline packet.

       -m     Don't do mail.  This is the default.

       +n     Do news.  Using the user's .newsrc file and the news  system's  active  file,  uqwk
              will collect all unread news articles in all subscribed newsgroups into the packet.
              This can generate a large number of messages and large packet files.

       -n     Don't do news.  This is the default.

       +L     Operate in SOUP (also known as HDPF or SLNP) mode.  The files comprising  a  Simple
              Offline  Usenet  Packet  (SOUP),  specifically,  AREAS  and  *.MSG, will be created
              instead of a QWK packet.  The reply file, if any, will be interpreted  as  an  SOUP
              "replies" file instead of a QWK reply packet.  This is the default.

       -L     Do  not  operate  in  SOUP mode.  If (and only if) neither SOUP nor ZipNews mode is
              selected, uqwk will operate in QWK mode.

       +z     Operate in ZipNews mode.  The files comprising a ZipNews news packet, specifically,
              "user.JN", "user.NWS", and "user.IDX", will be created instead of a QWK packet.

       -z     Do  not operate in ZipNews mode.  If (and only if) neither SOUP nor ZipNews mode is
              selected, uqwk will operate in QWK mode.  This is the default.

       -Iposting_agent
              Specifies the program used when  posting  messages  (usually  /usr/lib/news/inews).
              uqwk adds a `-h' flag when calling it, except in plain (non-expert) QWK mode.

       +Vn    The  value  of  n determines whether articles are validated before posting, whether
              this checking is verbose, and whether the result is respected or ignored:

                +V  Equivalent to `+V3' (default)
                +V0 No article validation
                +V1 Verbose article validation, ignoring the outcome
                +V2 Silent article validation, failing articles are
                    not posted
                +V3 Verbose article validation, articles containing
                    fatal errors are not posted

              Whenever  checking  is  performed,  bad  articles  are   appended   to   the   file
              `dead.articles' in the uqwk home directory. This option is only available when uqwk
              was compiled with the `GNKSA' option, in which case the default value is `3'.

       -V     Equivalent to `+V0', as defined above.

       +x     Honor Xref header lines in news articles.  When this switch is in effect, uqwk will
              only  pack a crossposted article in the first newsgroup in which it is encountered.
              This can reduce the size of the packet but may introduce  unexpected  behaviour  on
              the part of the offline reader.  This is the default.

       -x     Do not honor Xref lines.

       +F     Ignore  error  on  nonexisting news messages; proceed instead of aborting.  This is
              the default.

       -F     Signal an error and abort on missing news messages.

       -Mmailspool
              Look in the directory fImailspool for the mailbox file (or maildir  mailbox).   The
              default is /var/spool/mail.

       -fmailfile
              Look  for  mail  in  the file mailfile.  The default is a file (or maildir mailbox)
              with the same name as the user's login  name  in  fImailspool;  however,  the  MAIL
              environment variable is used when set.  This switch overrides the -M switch.

       -aactivefile
              Use  activefile  for the list of all available newsgroups and article numbers.  The
              default is /usr/local/news/lib/active.   This  option  is  not  available  if  uqwk
              obtains articles from a news server using NNTP.

       -Snewsdir
              Look  for  news articles in the directory newsdir.  The default is /var/spool/news.
              This option is not available if uqwk obtains articles  from  a  news  server  using
              NNTP.

       -Nnewsrcfile
              Use  newsrcfile  for the list of all newsgroups to which the user is subscribed and
              the list of article numbers which have been read.  The default is $HOME/.newsrc.

       -uusername
              By default uqwk uses the getpwuid() system call to determine the proper  user  name
              to use.  This switch overrides the results of that call.

       -Hhomedir
              By  default,  uqwk  uses  the  getpwuid()  system call to determine the user's home
              directory.  The home directory is where the files  comprising  the  offline  packet
              will  be  created.   It is also where uqwk looks for the .newsrc file.  This switch
              may be used to override the results of the getpwuid() call.

       -Bmaxblocks
              Stop processing news articles if the size of the offline packet  exceeds  maxblocks
              128-byte  blocks.   This  is  useful  since large amounts of unread news can create
              large packets.  Use a maxblocks value of zero to suppress this check.  The  default
              is 4096 blocks (half a megabyte).

       -Dngfile
              Process newsgroups in the order specified in ngfile.  ngfile is expected to contain
              one newsgroup name per line.

       -Usumfile
              Operate in "summary" mode.  Instead of packing articles,  uqwk  creates  a  summary
              file,  sumfile,  which  consists of the newsgroup name, article number, and subject
              line of each unread article.  All summarized articles are marked as read.

       -Eselfile
              Operate in "selection" mode.  Instead of using the .newsrc file to determine  which
              articles  to  pack,  uqwk  reads  selfile, a file in the same format as the summary
              file.  (The actual subjects are optional in selfile.)  The idea is that  a  summary
              may  be created by using -U, downloaded, edited or processed by additional software
              to select desired articles, uploaded, and fed to the -E switch for offline  article
              selection.

       -Rreplyfile
              Process  replyfile as a reply packet.  Messages and articles created by the offline
              reader must be uploaded as a reply packet and then processed by this switch  to  be
              mailed or posted.  If operating in SOUP mode, this file should be the REPLIES file.
              uqwk will remove replyfile when it has been processed unless it is running in read-
              only  mode.  If operating in ZipNews mode, this switch should specify the directory
              in which the ZipNews reply files reside.  No default reply file is set.

       -dhostname
              Use the specified hostname when processing ZipNews reply packets.  This  should  be
              the fully-qualified domain name of the Unix host.  The default is "nowhere".

QWK MODE OPTIONS

       +h     Include headers.  Since the QWK specification places limits on the sizes of certain
              header fields such as To:, From:, and Subject:, uqwk can include  all  message  and
              article  headers in the body of the message so all fields are visible.  This is the
              default.  (This switch only applies to the QWK packet format.)

       -h     Do not include headers in messages.  (QWK only.)

       -llen  Truncate the names of newsgroups to len characters.  Some  offline  readers  cannot
              handle  long  newsgroup  names.   Newsgroup  names  are truncated after having been
              translated.  The default is 15 characters.  Specify a value of zero  for  unlimited
              newsgroup name lengths.  (QWK only.)

       +e     Include  an  entry  for  every  subscribed newsgroup in the CONTROL.DAT file.  (QWK
              only).

       -e     Do not include an entry in CONTROL.DAT for empty newsgroups.  This is the  default.
              (QWK only.)

       +W     Activate  the  Blue  Wave  kludge.   The  Blue  Wave  QWK  reader does not like the
              personal.ndx file that uqwk creates by default.  If this switch is  specified  uqwk
              will create a regular ???.ndx file that Blue Wave likes.  (QWK only.)

       -W     Do not activate the Blue Wave kludge.  This is the default.

       +X     Operate  in  expert  QWK  mode.  The QWK header is ignored and all header lines are
              taken from the body of the message.  In the hands of an expert,  this  permits  the
              creation  of  RFC822  compliant  mail  messages and RFC1036 compliant news articles
              using QWK readers, which is difficult or impossible otherwise in many cases.   This
              is intended for people who really know what they're doing.  (QWK only.)

       -X     Do not operate in expert QWK mode.  This is the default.

       -ttablefile
              Translate  newsgroup  names  as  specified in tablefile.  Each line in tablefile is
              expected to have two fields  separated  by  white  space:   The  old  name  of  the
              newsgroup and the name to which it will be translated.  (QWK only.)

       -bbbsname
              Specify  the  BBS  Name to be entered into the QWK packet.  The default is "unknown
              BBS".  (QWK only.)

       -ccity Specify the BBS City to be entered into the QWK packet.  The default  is  "Anytown,
              USA".  (QWK only.)

       -Pphone
              Specify  the  BBS  Phone  Number to be entered into the QWK packet.  The default is
              "555-1212".  (QWK only.)

       -ssysop
              Specify the BBS Sysop Name to be entered into the QWK packet.  The default is  "Joe
              Sysop".  (QWK only.)

       -ibbsid
              Specify  the  BBS  ID  to  be entered into the QWK packet.  The BBS ID is important
              since it will be checked against the BBS ID string in any incoming  reply  packets.
              If  the  two  do  not  match,  the  reply packet will not be processed.  The BBS ID
              consists of an integer, a comma, and a string of less than nine characters, with no
              spaces.  The default is "0,SOMEBBS".  (QWK only.)

SCORING OPTIONS

       +k     Perform  kill/score processing.  The global score file will be read (if it exists),
              as well as the score file for the current group, and each  article  will  becored'.
              See the "USING SCORE FILES" section below.  This is the default.

       -k     Do not perform kill/score processing.

       -Tn    Set global threshold to signed integer n.  The default is 0.

       -Kkilldir
              Look for score files in killdir.  The default is $HOME/.uqwk.

NNTP AUTHENTICATION OPTIONS

       +Ausername:password
              Perform  NNTP  authentication, specifying the username and password to use for that
              purpose. (NNTP only)

       -A     Don't do NNTP authentication.  This is the default.  (NNTP only)

ENVIRONMENT

       Most of the run-time options can also be  controlled  by  environment  variables.   If  an
       option  is  specified  by  both  an  environment  variable  and a command-line option, the
       command-line option is honored.

       Note that, as with options, not all variables are meaningful in al  possible  incarnations
       of the program.

       UQ_DO_MAIL
              Determines  whether  or not to process mail.  Should be set to `1' (do mail) or `0'
              (don't do mail).

       UQ_DO_NEWS
              Determines whether or not to process news.  Should be set to `1' (do news)  or  `0'
              (don't do news).

       UQ_INC_HDRS
              Determines  whether  or  not  to include headers in messages.  Should be set to `1'
              (include headers) or `0' (don't include headers).

       UQ_EVERY_MODE
              Determines whether or not to include an entry in CONTROL.DAT for empty  newsgroups.
              Should be set to `1' (include empty groups) or `0' (don't include empty groups).

       UQ_PRT_OPTS
              Determines  whether  or  not to just print the values of run-time options and stop.
              Should be set to `1' (print options) or `0' (don't print options).

       UQ_READ_ONLY
              Determines whether or not to run in read-only mode.  Should be set  to  `1'  (read-
              only) or `0' (not read-only).

       UQ_WAF_MODE
              Determines  whether the .newsrc file should be interpreted as a Waffle "join" file.
              Should be set to `0' (normal) or `1' (Waffle mode).

       UQ_SOUP_MODE
              Determines whether or not to run in SOUP mode.  Should be set to `0' (don't run  in
              SOUP mode) or `1' (run in SOUP mode).

       UQ_ZIP_MODE
              Determines  whether or not to run in ZipNews mode.  Should be set to `0' (don't run
              in ZipNews mode) or `1' (run in ZipNews mode).

       UQ_INEWS_PATH
              Specifies the posting agent (usually inews) to be used.  uqwk calls it with a  `-h'
              command line switch, except in non-expert QWK mode.

       UQ_VALIDATE
              Determines  the  level  of message validation.   Applicable only with GNKSA support
              compiled in.  See the `+V' switch for details.

       UQ_XRF_MODE
              Determines whether or not to honor Xref lines.  Should be set to `0' (do not  honor
              Xref  lines)  or `1' (honor Xref lines).  UQ_IGNORE0FD Determines whether or not to
              ignore nonexisting news messages; `0' to abort, `1' to ignore.

       UQ_BW_KLUDGE
              Determines whether or not to activate the Blue Wave kludge.  Should be set  to  `0'
              (do not activate the Blue Wave kludge) or `1' (activate the Blue Wave kludge).

       UQ_XPRT_MODE
              Determines  whether or not to operate in QWK expert mode.  Should be set to `0' (do
              not run in expert mode) or `1' (run in expert mode).

       UQ_MAIL_DIR
              Specifies the directory where the mailbox file (or maildir type mailbox) resides.

       UQ_MAIL_FILE
              Specifies the mailbox file (or maildir mailbox).

       UQ_ACT_FILE
              Specifies the name of the news system's active file.

       UQ_NEWS_DIR
              Specifies the directory where the news spool resides.  UQ_USER_NAME  Specifies  the
              username of the person running uqwk.

       UQ_HOME_DIR
              Specifies  the  home  directory,  where the packet files will be created, and where
              uqwk expects to find the .newsrc file.

       UQ_BBS_NAME
              Specifies the BBS name to be entered into the QWK packet.

       UQ_BBS_CITY
              Specifies the BBS city to be entered into the QWK packet.

       UQ_BBS_PHONE
              Specifies the BBS phone number to be entered into the QWK packet.

       UQ_BBS_SYSOP
              Specifies the BBS sysop name to be entered into the QWK packet.

       UQ_BBS_ID
              Specifies the BBS ID to be entered into the QWK packet.

       UQ_NRC_FILE
              Specifies the name of the user's .newsrc file.

       UQ_NG_FILE
              Specifies the name of the desired newsgroups file.

       UQ_MAX_BLKS
              Specifies the maximum size of the offline packet in 128-byte blocks.

       UQ_TRN_FILE
              Specifies the name of the newsgroup name translation table.

       UQ_GRP_LEN
              Specifies the maximum length of newsgroup names.

       UQ_REP_FILE
              Specifies the name of the reply packet, if any.

       UQ_HOST_NAME
              Specifies the host name for ZipNews replies.

       UQ_SUM_FILE
              Specifies the name of the summary file, if any.  Also causes  uqwk  to  execute  in
              summary mode.

       UQ_SEL_FILE
              Specifies  the  name of the selection file, if any.  Also causes uqwk to execute in
              selection mode.

       UQ_DO_KILLS
              Determines whether or not to perform kill/score processing.  Should be set  to  `1'
              (do scoring) or `0' (don't do scoring).

       UQ_KILL_THRESHOLD
              Specifies the global threshold.  Should be set to a signed integer.

       UQ_KILL_DIR
              Specifies the directory where the score files are.

       UQ_AUTH_USER
              Specifies  the  username  to  use for NNTP authentication.  If, and only if, both a
              username and a password are set, NNTP authentication will be attempted.

       UQ_AUTH_PASS
              Specifies the password to use for NNTP authentication.  If, and  only  if,  both  a
              username and a password are set, NNTP authentication will be attempted.

USING SCORE FILES

       If  support  for scoring was compiled in, uqwk can "score articles" while collecting news,
       so that articles whose "score" is below a certain  threshold  can  be  excluded  from  the
       packet.  The rules according to which articles are scored are specified by the user in so-
       called score files.

       The format of these score files is based on the score files used by some  offline  readers
       (notably  YARN).  Each newsgroup can have a score file; its name is the name of the group.
       There is also a global score file, that applies to all groups, which is called "global".

       Getting started

       If you find some class of articles you wish to exclude from a  particular  newsgroup,  use
       any  text  editor  to  create  a file named after it.  Each line of such a file contains a
       score, a place to look for a keyword or regular expression, and the keyword.

       For example, to exclude all crossposted articles from talk.bizarre, create a  file  called
       "talk.bizarre" in the directory $HOME/.uqwk, with the following line in it:

         -10 Newsgroups: ,

       The  effect  of  this  line in this file would be that all articles in talk.bizarre which'
       "Newsgroups: " header contains a `,' would get -10 added to  their  initial  score  of  0.
       With a threshold of 0, that means that unless other lines add enought to compensate, these
       articles will not be included.

       Score file format

       Each score file carries the name of the group it applies to, and consists of a  series  of
       score lines.  Blank lines and lines beginning with `#' are ignored.  Lines can have any of
       the following formats:

       killthreshold n
              specifies an integer score n that articles must meet  or  exceed  in  order  to  be
              included  in  the  packet.   This  line is optional, if not present the global kill
              threshold is used.  (which defaults to 0 if not set).

       score header pattern
              constitutes an actual scoring line; score is added to an  article's  score  if  the
              remainder of the line matches.  To match, the specified pattern must match with the
              articles's indicated header.  The specified pattern  is  always  interpreted  as  a
              regular  expression; for reasons of compatibility patterns can be preceded with the
              word "pattern".

       The global score file is processed first.  Its  patterns  are  applied  to  all  articles.
       Score  lines  are  processed in sequence.  An article that scores below the kill threshold
       will not be included.

       Example alt.usenet.offline-reader score file

         # only include articles explicitly selected
         killthreshold 1

         # select messages about FurriNews
         +2 Subject: FurriNews
         # select messages about uqwk
         +2 Subject: uqwk

         # eliminate messages about crapware
         -666 Subject: microsoft
         -666 Subject: netscape

       Limitations, additional notes

       It should be noted that only headers are scanned for computing scores.   Furthermore,  all
       scanning  is done using POSIX regex functions -- even when a simple substring search could
       have sufficed.

COMMAND LANGUAGE

       If, while processing a reply packet, uqwk encounters a message to the username "UQWK", the
       body  of  the  message  will  be  interpreted as a small command language, used to display
       newsgroup names and subscribe or unsubscribe to newsgroups.  The results of the  execution
       of the commands will be mailed back to the originating user.

       This is what the command language looks like:

       HELP   List all the available commands.

       SUBSCRIBE newsgroup
              Subscribe to the named newsgroup.

       UNSUBSCRIBE newsgroup
              Unsubscribe  from  the named newsgroup.  UNSUBSCRIBE ALL may be used to unsubscribe
              from all newsgroups.  UNSUBSCRIBE ALL is also the only way to create a new  .newsrc
              if it does not already exist.

       CATCHUP newsgroup
              Mark all articles in the named newsgroup as read.

       GROUPS List all newsgroups to which the user is currently subscribed.

       ALLGROUPS
              List all the available newsgroups and the number of articles in each one.

       SHELL command
              Execute  the  specified shell command.  Anything written to standard output will be
              mailed back to the originating user.

NOTES

       In QWK mode, it is possible to send mail to long email  addresses  by  including,  as  the
       first thing in the body of the message, a line of the form:

         To: user@site.com

       (The space after the colon is important.)

BUGS

       The handling of MMDF mail files is kludgy and should be fixed.

       In  QWK  mode,  if the .newsrc file is modified significantly between the time a packet is
       created and the time replies to that packet are processed, it is  possible  that  articles
       may  be  posted  to the wrong newsgroup.  If you use uqwk along with a conventional online
       newsreader, it may be wise to maintain a separate .newsrc file strictly for uqwk.

       uqwk does not do mail locking.  New mail messages  that  arrive  while  packing  mail  can
       therefore  be  lost.   If this worries you (it should), there are a few ways of preventing
       message loss.  One approach (see the `getsoup' script, listed below, for an example) is to
       move  your  messages to a temporary file, and let uqwk collect the messages from that file
       instead of directly from the system mailbox.  Since messages might  get  appended  at  any
       time,  locking must be applied even while the mailbox is being moved.  Another approach is
       to explicitly lock the mailbox before, and unlock it after,  running  uqwk  --  i.e.  like
       this:

         lockfile -l666 -ml; trap "lockfile -mu" 1 2 3 13 15
         uqwk +m
         lockfile -mu; trap "" 1 2 3 13 15

       A  third  approach  to run uqwk in read-only mode and clean up your mailbox afterwards; in
       which case one can but hope one really knows what one's doing.

       uqwk does not support the ZipNews offline  commands.   To  perform  offline  configuration
       using  uqwk,  send  mail  to  the  username  "UQWK" in the format described in the COMMAND
       LANGUAGE section above.

SAMPLE SCRIPTS

       It may be convenient for users to employ simple shell scripts for preparing packets  using
       uqwk, and for handling reply packets.  A few examples might prove instructive.

       getsoup - collect mail and news into a SOUP packet

         #!/bin/sh

         UQWKARGS="-B0 -m +L"

         # What to do?  Set variables to enable.
         #UQ_DO_MAIL=1
         UQ_DO_NEWS=1
         export UQ_DO_MAIL UQ_DO_NEWS

         # NNTPAUTH="yes please!"

         # When reading mail from the system mailbox, locking
         # will have to be done somehow.  If your Unix system
         # does not have lockfile, but does have /usr/ucb/mail,
         # use UQ_LOCKING="ucbmail".  See below.

         UQ_LOCKING="lockfile"

         #
         # No user servicable parts below (I hope)
         #

         prg=`basename $0`

         if [ -z "$UQ_DO_MAIL" -a -z "$UQ_DO_NEWS" ]
         then
           echo "$prg: nothing to do"                          >&2
           exit
         fi

         UQ_HOME_DIR=$HOME/.uqwk
         UQ_NRC_FILE=$HOME/.newsrc
         export UQ_HOME_DIR UQ_NRC_FILE

         # Do things in a nice, cozy subdirectory
         if [ ! -d $UQ_HOME_DIR ]
         then
           echo "$prg: $UQ_HOME_DIR does not exist, creating it"
           mkdir -p $UQ_HOME_DIR
           if [ ! -d $UQ_HOME_DIR ]
           then
             echo "$prg: failed to create $UQ_HOME_DIR"        >&2
             echo "$prg: bailing out"                          >&2
             exit 1
           fi
         fi
         cd $UQ_HOME_DIR

         soupfile=soup.zip

         if [ -f $soupfile ] ; then
           echo "Hmmm, $soupfile already exists."
           rm -i $soupfile
           if [ -f $soupfile ] ; then
             exit 1
           fi
         fi

         if [ -n "$UQ_DO_NEWS" ]
         then
           UQWKARGS="$UQWKARGS +n"
           # Get auth stuff (nntp auth mode only)
           if [ -n "$NNTPAUTH" ]
           then
             while [ -z "$UQ_AUTH_PASS" ]
             do
               echo "Authentication for server $NNTPSERVER;"
               echo "Username: $USER, password: \c"
               stty -echo
                 read UQ_AUTH_PASS; echo
               stty echo
             done
             # Pass these through environment
             UQ_AUTH_USER=$USER; export UQ_AUTH_USER UQ_AUTH_PASS
           fi
         fi

         if [ -n "$UQ_DO_MAIL" ]
         then
           UQWKARGS="$UQWKARGS +m"

           # Read mail from the system mail box?
           if [ -z "$UQ_MAIL_FILE" ]
           then
             # uqwk does not do mailbox locking.  Locking options:
             #  - procmail's nifty "lockfile" utility
             #  - /usr/ucb/mail ("ucbmail")
             UQ_MAIL_FILE=/tmp/$prg.$USER.mbx.$$;
             export UQ_MAIL_FILE

             case $UQ_LOCKING in
             "lockfile")
               lockfile -l666 -ml; trap "lockfile -mu" 1 2 3 13 15
                mv $MAIL $UQ_MAIL_FILE
                lockfile -mu; trap "" 1 2 3 13 15
                ;;
             "ucbmail")
                ( echo 's1-$' $UQ_MAIL_FILE ; echo q )          |
                  /usr/ucb/mail >/dev/null
                ;;
             *)
                echo "$prg: no, or unknown, locking method"     >&2
                echo "$prg: bailing out"                        >&2
                exit 1
                ;;
             esac
           fi
         fi

         #
         # Now we know how to call uqwk, proper args 'n' all
         #
         uqwk $UQWKARGS; err=$?
         if [ $err -ne 0 ]
         then
           echo "$prg: fatal error in uqwk"                    >&2
           echo "$prg: proceed with caution"                   >&2
         fi

         # Create the SOUP packet
         #
         if [ "`echo *.MSG`" = "*.MSG" ]
         then
           echo "Sorry, nothing to get."
           rm -f AREAS
           exit
         fi
         zip -m $soupfile AREAS *.MSG
         mv $soupfile $HOME

         echo "Done, you can upload
           <ftp://$USER@ftp.`domainname`/$soupfile>
         now."

       putsoup - process a SOUP reply packet

         #!/bin/sh

         prg=`basename $0`
         rf=reply.zip; cd $UQ_HOME_DIR

         if [ ! -f $rf ]; then
           echo "$prg: no reply packet found"                  >&2
           exit 1
         fi

         unzip -ju $rf                                 2>/dev/null

         if uqwk -m -n +L -RREPLIES
         then
           echo "$prg: fatal uqwk error, proceed with caution" >&2
         fi

         echo "Done. If all went well, $rf can safely be deleted."
         rm -i $rf

SEE ALSO

       inews(8), lockfile(1), mail(1), procmail(1)

ACKNOWLEDGEMENTS

       uqwk was inspired by a conversation with Harry Lockwood <lockwood@world.std.com>.

       QWK  format  was  designed  by  Mark  "Sparky"  Herring <mark.herring@nashville.com>.  The
       creator of SOUP is Rhys Weatherley <rhys@cs.uq.oz.au>.  The creator  of  ZipNews  is  Jack
       Kilday <jkilday@nlbbs.com>.

       Thanks  to  Patrick Y. Lee <patlee@panix.com> for the QWK documentation.  Many thanks also
       to  the  beta-testers:   Karl  J.  Vesterling   <kjv@exucom.com>   and   Brian   J.   Coan
       <brian@igc.apc.org>.

       Many thanks to Ken Whedbee <kcw@grumpy.ksc.nasa.gov> for the NNTP modifications.

       Many  other  people,  too numerous to list here, contributed bug fixes and suggestions for
       improvement.

AUTHOR

       Steve Belczyk, steve1@genesis.nred.ma.us, seb3@gte.com.

       Copyright (C) 1993-1994 by steve belczyk.  Permission to use, copy, modify and  distribute
       this  software  and  its  documentation for any purpose and without fee is hereby granted,
       provided that the above copyright notice appear in all copies and that both that copyright
       notice  and  this  permission notice appear in supporting documentation.  This software is
       provided "as is" without expressed or implied warranty.

MODIFIED BY

       Jeroen Scheerder, js@cwi.nl, js@xs4all.nl, js@phil.ruu.nl.

MORE ACKNOWLEDGEMENTS

       Jim Tittsler  <7j1ajh@amsat.org>  came  up  with  decent  scoring  code.  Jos  den  Bekker
       <josdb@xs4all>  provided  valuable  suggestions and bugfixes, most notably regarding error
       handling.

                           $Author: js $  $Date: 1999/10/19 08:48:42 $                    UQWK(1)