:
# fax-recv: script invoked by zfaxd to receive a single fax document.
#
# Usage:
#
# fax-recv <device>

SHELL=/bin/sh
TMPDIR=${TMPDIR:-"/tmp"}
# Give us a more descriptive e-mail identity than "root".
NAME="Z-Fax Reception Program"
export SHELL NAME

if [ $# -ne 1 ]
then
    echo "Usage: $0 <device>"
    exit 1
fi

# Set up default values.
RECEIVE=store
RECIEVE_DIR=/usr/spool/fax/incoming
RECEIVE_FORWARD=root
RECEIVE_NOTIFY=
RECEIVE_FAIL=discard
FAX_ID=Z-fax
recvprog=c2recv
mail=mail
tempfile=$TMPDIR/recv$$

# Get parameters.
device=$1

# Read the configuration file.
ZFAXLIB=${ZFAXLIB:-"/usr/lib/Zfax"}
[ -r $ZFAXLIB/config ] && . $ZFAXLIB/config

# Attempt reception.
output=`$recvprog "$device" "$FAX_ID" "$tempfile" 2>&1`
status=$?

# Handle results.
case $status in
    0) if [ "$RECEIVE" = "store" ]
       then
	   seq=`cat $RECEIVE_DIR/sequence 2> /dev/null`
	   [ "$seq" -lt 100 ] && seq=100
	   expr "$seq" + 1 > $RECEIVE_DIR/sequence
	   mv $tempfile $RECEIVE_DIR/fax-$seq
	   echo "Fax received, stored in file $RECEIVE_DIR/fax-$seq" | $mail $RECEIVE_FORWARD $RECEIVE_NOTIFY
       else
	   faxmail $tempfile $RECEIVE_FORWARD
	   echo "Fax received, forwarded to $RECEIVE_FORWARD" | $mail $RECEIVE_NOTIFY
	   rm -f $tempfile
	   exit 0
       fi
       ;;

    8) # killed by fax send
       sleep 30
       exit 8
       ;;

    2) # modem in use
       # wait 1 minute before allowing another receiver to start up
       sleep 60
       exit 3
       ;;

    3) # modem problem
       (
         echo "The fax receive program reported that the modem on $device"
	 echo "did not respond to commands.  There may be a problem with"
	 echo "that modem."
       ) | $mail $RECEIVE_FORWARD $RECEIVE_NOTIFY
       # wait 10 minutes before allowing another receiver to start up
       sleep 600
       exit 3
       ;;

    *) if [ "$RECEIVE_FAIL" = "discard" ]
       then
	   rm -f $tempfile
	   exit $status
       else
	   seq=`cat $RECEIVE_DIR/sequence 2> /dev/null`
	   [ "$seq" -lt 100 ] && seq=100
	   expr "$seq" + 1 > $RECEIVE_DIR/sequence
	   mv $tempfile $RECEIVE_DIR/fax-$seq
	   (
	       echo "Fax received with error code $status:"
	       echo ""
	       echo "    $output"
	       echo ""
               echo "Stored in file $RECEIVE_DIR/fax-$seq"
           ) | $mail -s "Fax received" $RECEIVE_FORWARD $RECEIVE_NOTIFY
	   exit 0
       fi
       ;;
esac

exit 1
