#!/bin/csh -f

# @(#)Collect mail in SOUP file with uqwk. Jos den Bekker <josdb@xs4all.nl>
# This script works with the new MAILDIR format and supposes
# at least uqwk version 2.08, which can be downloaded from
# http://www.xs4all.nl/~js
# $Id: soupmail,v 1.1 1999/03/17 10:19:34 josdb Exp josdb $

if (! $?MAIL ) then
  echo "Don't know where mailbox is."
  exit
else if (! -e $MAIL || -z $MAIL) then
  echo "No mail for $user"
  exit
else if ( -d $MAIL ) then
  if ( `/bin/ls $MAIL/new | wc -l` == 0 && `/bin/ls $MAIL/cur | wc -l` == 0 ) then
    echo "No mail for $user"
    exit
  endif
  set maildir
endif

set workdir=/tmp/uqwk.$$
set polldir=~/poll
set args="+m -H$workdir -B0"
set date=`date +%d%m`
set prg=`basename $0`
set nonomatch

if (! -d $polldir ) then
  set polldir=~
endif

if ( -d $workdir ) then
  echo "${prg}: working directory $workdir already exists."
  exit 1
endif

mkdir $workdir
if ( $status != 0 ) then
  echo "${prg}: error creating working directory $workdir"
  exit 1
else
  cd $workdir
endif

onintr interrupt

if (! $?maildir ) then
  set lockfile=lockfile
  switch ( $lockfile )
    case "ucbmail":
      ( echo 's1-$' $workdir/qwk$$ ; echo q ) | /usr/ucb/mail >/dev/null
      if ( $status != 0 ) then
        /bin/rm -rf $workdir
        exit 1
      endif
      breaksw
    case "lockfile":
      lockfile -ml
      /bin/mv $MAIL $workdir/qwk$$ >& /dev/null 
      lockfile -mu
      breaksw
    default:
      echo "{prg}: unknown locking device; aborting"
      exit 1 
      breaksw
  endsw
  set args="$args -f$workdir/qwk$$"
endif

uqwk $args >/dev/null

if ( $status != 0 ) then
  echo "${prg}: uqwk error"
  exit 1
endif

zip -q mail$date AREAS *.MSG
if ( $status != 0 ) then
  cd
  if ( `/bin/ls $workdir | wc -l` == 0 ) then
    /bin/rm -rf $workdir
  else
    echo "${prg}: mail output of uqwk is in $workdir"
  endif  
  exit 1
endif

if ( -e $polldir/mail*.zip.* ) rm $polldir/mail*.zip.*

if ( -e $polldir/mail$date.zip ) mv $polldir/mail$date.zip $polldir/mail$date.zip.$$

mv mail$date.zip $polldir
if ( $status != 0 ) then
  echo "${prg}: error moving $workdir/mail$date.zip"
  exit 1
endif  

cd
rm -rf $workdir

sz $polldir/mail$date.zip
if ( $status != 0 ) then
  exit 1
else
  /bin/mv $polldir/mail$date.zip $polldir/mail$date.zip.$$
endif
exit 0

interrupt:
onintr -
if (! $?maildir ) then
  if ( $lockfile == "lockfile" ) then
    lockfile -mu
  endif
endif
cd
echo -n "${prg}: interrupted... "
if ( `/bin/ls $workdir | wc -l` == 0 ) then
  echo "no output"
  /bin/rm -rf $workdir
else 
  echo "output is in $workdir"
endif
exit 1
