From: short <> Date: Sun, 14 Apr 2002 21:34:15 +0000 (+0000) Subject: -binary file X-Git-Url: https://git.jankratochvil.net/?a=commitdiff_plain;h=9fa7a8f2e9a04a9d869d213fa612bd8b34c447d4;p=efax.git -binary file --- diff --git a/fax b/fax deleted file mode 100755 index b8ea77a..0000000 --- a/fax +++ /dev/null @@ -1,1040 +0,0 @@ -#!/bin/sh -# -# fax - script to make, send, receive, view or print a fax -# Copyright 1993-1999 by Ed Casas -# -# --- Start of user configuration section --- -# -# Notes: -# -# - do not put spaces before or after the equal (=) signs. -# -# - variables can also be set on the command line, for example: -# fax DEV=cua0 send file.ps -# or in a configuration file (see CONFIGFILES below) -# - -# The names of the fax script, efax and efix, including full path -# if necessary. - -FAX=fax -EFAX=efax -EFIX=efix - -# The device to which the fax modem is connected (e.g. ttya for -# /dev/ttya). Use a dial-out (cua) device if available. If -# there are links to this device then all programs must use same -# name or the UUCP locking mechanism will fail. For example, if -# /dev/modem is a link to /dev/cua1, then getty, uucp, kermit, -# pppd, dip, etc. must *all* use either /dev/modem or /dev/cua1. - -DEV=cua1 - -# Your fax number in international format, 20 characters maximum. -# Use only digits, spaces, and the "+" character. - -FROM="+1 800 555 5555" - -# Your name as it should appear on the page header. - -NAME="Put Your Name Here" - -# The preferred page size for creating and printing faxes. -# Allowed values are "letter", "legal", and "a4". - -PAGE=letter -# PAGE=legal -# PAGE=a4 - -# The type of printer. Use 'pcl' for HP-PCL or 'ps' for -# Postscript. See definition of PRINT (below) for more options. - -PRTYPE=ps # Postscript (e.g. Apple LaserWriter) -# PRTYPE=pcl # HP-PCL (e.g. HP LaserJet) - -# The command to print image files from standard input. Typically -# this is "lpr" or "lp". - -PRCMD="lpr" - -# The command to view a Portable Gray Map (PGM) image from the -# standard input. Typically "xv -" or "xloadimage stdin". - -VIEWCMD="xloadimage stdin" # best -# VIEWCMD="pnmtoxwd | xwud" # slower alternative -# VIEWCMD="xv -" # much slower alternative - -# The name of the Ghostscript executable including full path if -# necessary. Only required if faxing Postscript files. - -GS=gs - -# Dial string prefix and suffix such as T for tone dialing, P for -# pulse dialing, 9 to get an external line, commas for delays or -# W to wait for dial tone. See definition of TELCVT below if you -# have more complex requirements. - -DIALPREFIX="T" -DIALSUFFIX="" - -# The name(s) of lock file(s) according to your system's -# conventions. Protect with single quotes for delayed evaluation. -# Add a leading '#' to the file name to use binary format. - -LOCK='-x /var/lock/LCK..$DEV' # modern systems -# LOCK='-x /usr/spool/uucp/LCK..$DEV' # older systems -# LOCK='-x /var/lock/LCK..$DEV -x /var/spool/uucp/LCK..$DEV' # both -# LOCK='-x #/usr/spool/uucp/LCK..$DEV' # binary format -# LOCK='-x /usr/spool/locks/LK.047.040.011' # SysV style names -# LOCK='' # no lock file - -# Uncomment one of the following lines to force xon/xoff flow -# control only if you have one of the types of modems listed. - -# FCINIT='-j\Q4' # AT&T (Dataport, Paradyne) -# FCINIT='-j\Q1' # Motorola (Power Modem, 3400 Pro,...) -# FCINIT='-j*F1' # QuickComm (Spirit II) -# FCINIT='-j&H2' # USR (Courier, Sportster) -# FCINIT='-or' # Multi-Tech (for bit reversal) - -# **************************************************************** -# The remaining options probably won't need to be changed. -# **************************************************************** - -# Configuration files that are sourced if they exist. Comment -# out if you don't need to use config files. Warning: any type of -# shell command in these files will be executed. - -CONFIGFILES="/etc/efax.rc ${HOME:-~}/.efaxrc ./.efaxrc" - -# A command that will generate unique names for logs and received -# files. 'date +%m%d%H%M%S' works on most systems. Protect with -# single quotes. - -TSTAMP='date +%m%d%H%M%S' -# TSTAMP='echo $$' # alternative - use process number - -# Shell command to convert aliases to phone numbers when sending -# faxes. When executed $1 will be the alias and $f the file name -# to search. The example below uses a directory file where alias -# lines start with the keyword "fax" followed by the alias in -# parentheses and a colon. The remainder of the line is taken to -# be the phone number. Other lines are ignored. For example, if -# one of the files in DIRFILES (defined below) contained the line -# "fax(kpmg): 691-3031", you could use the command "fax send kpmg -# invoice.24". Protect with single quotes. - -LOOKUP='eval sed -n -e "/^fax($1):/{" -e "s/^[^:]*://p" -eq -e"}" $f' - -# List of telephone directory file(s) to be searched. The -# default is the file .faxdir in the user's home directory. - -DIRFILES="${HOME:-.}/.faxdir" - -# Shell command to convert phone numbers to dial strings. This -# lets you to store numbers without the long distance or -# alternate carrier access codes, passwords, accounting digits, -# etc. In the examples below this is used to convert numbers -# beginning with '+'; the first substitution handles same-country -# calls and the second handles international calls. - -TELCVT='sed -e s/+1/1/ -e s/+/011/' # North America -# TELCVT='sed -e s/+61/0/ -e s/+/0011/' # Australia -# TELCVT='sed -e s/+44/0/ -e s/+/00/' # UK -# TELCVT='sed -e s/+49/0/ -e s/+/00/' # Germany -# TELCVT='sed -e s/+852// -e s/+/001/' # Hong Kong -# TELCVT='sed -e s/+33// -e s/+/19W/' # France (?) -# TELCVT='sed -e s/+34/0/ -e s/+/07W/' # Spain -# TELCVT='sed -e s/+1/10288/' # use AT&T -# TELCVT='sed -e s/+/T82W1682W9W/' # get out of PBX - -# efix options to use a bitmap font for text-to-fax conversion. -# The option -l66 puts 66 lines of text per page, -d1,1 sets 1 -# inch top & left margin. Comment these out to use the built-in -# font. Use "fax makefont" to make bitmap fonts from Postscript -# fonts. - -# TEXTFONT="-l66 -d1,1 -f /usr/bin/efaxfont" - -# efax options to specify a different font for headers. Generate -# using "fax makefont." - -# HDRFONT="-f /usr/bin/efaxfont" - -# Dimensions of page sizes. - -PAGE_letter="8.465x11in" # fax width x letter length -PAGE_legal="8.465x14in" # fax width x legal length -PAGE_a4="21x29.7cm" # ISO A4 - -# Default resolution for converting to fax format. Can only be -# 204x196 or 204x98. - -RES=204x196 # default "Fine" resolution (196 lpi) -# RES=204x98 # standard resolution (98 lpi) - -# When the print and view commands below are executed, $f will be -# the input file name and $PAGEDIM will be one of the above page -# dimensions. Protect with single quotes. - -# PRINT: A command to convert fax files to a printable format. -# For printers other than Postscript or PCL you can use efix's -# PBM output and an appropriate pbm filter (such as pbmtoepson) -# or efix's Postsript output and Ghostscript as a filter. Change -# the scaling (-s) and displacement (-d) options as required to -# fit the image onto the area your printer can print. - -PRINT='$EFIX -ve -p$PAGEDIM -r300 -s0.98 -d0,0.125 -o$PRTYPE $f' - -# example using pbm utilities: -# PRINT='$EFIX -ve -p$PAGEDIM -r60x72 -opbm $f | pbmtoepson' - -# example using Ghostscript: -# PRINT='$EFIX -ve -p$PAGEDIM -r120x144 -ops $f | \ -# $GS -q -sPAPERSIZE=$PAGE -sDEVICE=epson -r120x144 \ -# -dNOPAUSE -dSAFER -sOutputFile=- - ' - -# VIEW: A command to convert fax files to PGM format for -# previewing. efix's pgm output reduces image dimensions by 4X. - -# VIEW='$EFIX -ve -p$PAGEDIM -r200 -opgm $f' # 50dpi: fast, whole-page view -VIEW='$EFIX -ve -p$PAGEDIM -r300 -opgm $f' # 75dpi: slower, readable size - -# Commands to set up modem. "-iZ -i&FE&D2S7=120 -i&C0" -# works with almost all modems. See the efax(1) man page for -# details. - -INIT="-iZ -i&FE&D2S7=120 -i&C0" - -# Command(s) to reset modem when efax finishes. "-kZ" works in -# almost all cases. - -RESET="-kZ" -# RESET="-kZ -k&F+FCLASS=0" # for modems that stay in fax mode after reset - -# Speaker mode(M) and loudness(L). Mn sets speaker mode where n -# means: 0:never, 1:until carrier, 2:always, 3:on receive only. - -SPKR="-iM1L0" - -# Options to use a particular command sets. Normally efax -# selects the command set based on the modem's capabilities. Use -# -o1 to force Class 1, -o2 for Class 2 and -o0 for Class 2.0. - -# CLASSINIT="-o1" # Class 1 -# CLASSINIT="" # Class 2 -# CLASSINIT="-o0" # Class 2.0 - -# The modem's capabilities for sending faxes. Normally efax -# chooses these by querying the modem. "-c 1,3,0,0,0,0,0,0" -# forces 9600 bps maximum speed. See the efax(1) man page for a -# description of the fields. - -# TXCAP="-c 1,3,0,2,0,0,0,0" - -# Capabilities for receiving faxes. Usually the same as TXCAP. -# If your modem only receives at 4800 bps use "-c 1,1,0,0,0,0,0,0". - -# RXCAP="$TXCAP" - -# Additional options required only for transmit or only for -# receive. None normally required. - -RXINIT="" -TXINIT="" - -# Command to make a date for the page header. Protect with single -# quotes. 'date "+%Y/%m/%d %H:%M"' works on most systems. - -DATECMD='date "+%Y/%m/%d %H:%M"' # YYYY/MM/DD HH:MM (24hour) -# DATECMD='date' # longer, more readable - -# Page header format. You may use $DATE, $NAME, $FROM, $TO, and -# "%d/%d" (for page number and count). Protect with single -# quotes. Example: '$DATE $FROM $NAME p. %d/%d'. - -HDR='$DATE $FROM $NAME p. %d/%d' - -# BUSYRETRIES is a list of delays in seconds between attempts to -# redial busy numbers. Comment out if you don't want to retry -# busy numbers. - -BUSYRETRIES="30 60 120 300 60 600 60 60 1200 60 60" - -# FAILRETRIES is a list of delays in seconds between attempts to -# retry failed transmissions. Retries are only attempted if at -# least one page was sent in the previous attempt. Retries -# include only pages not already sent. Comment out if you don't -# want to retry failed transmissions. - -FAILRETRIES="300 300" # try two more times at 5 minute intervals - -# Command to run another program (efax) at a higher-than-normal -# scheduling priority. This command isn't used if it fails -# (e.g. because the current user isn't privileged). Comment this -# out if it causes problems. - -NICE="nice -n -10" - -# Standard versions of commands that are often aliased. - -RM="/bin/rm -f" -LS="/bin/ls" - -# Messages to display. VERB sets the messages displayed (stderr) -# and VERBLOG the messages written to log files (stdout). - -VERB="ewin" # show errors, warnings, progress & negotiation -VERBLOG="chewmainrxtf" # log everything - -# **************************************************************** -# The remaining configuration options apply only to the `fax -# answer' command. You can ignore these if you will only be -# running efax manually. See "USING INIT TO RUN EFAX" in the -# efax man page for more information. -# **************************************************************** - -# device or file where fatal error messages should be written - -CONSOLE=/dev/console - -# The directory to store incoming faxes and log files. This directory -# should already exist and be writable by the user(s) of this script. - -FAXDIR=/var/spool/fax -LOGDIR=/var/log/fax - -# The strftime(3) pattern that generates the file name for -# received files. For example, at 10:45:36 on February 25, -# "%m%d%H%M%S" would produce 0225104536, "%j-%H%M" would produce -# 056-1045, and %d%b%H%M 25Feb1045. - -ANSFNAME="%m%d%H%M%S" - -# umask for received files. Use 022 to allow anyone to retrieve faxes. - -UMASK=022 - -# The user to be sent mail when a fax is received. - -FAXMGR=root - -# The sendmail executable including full path if necessary. Only -# required if forwarding received faxes by e-mail in $NOTIFY. - -SENDMAIL=/usr/sbin/sendmail - -# The command to execute when a fax is received. Normally this -# sends FAXMGR e-mail or prints the received fax. The variable -# $f will be the name of the log file, $FILES will contain the -# names of the received files, and $REMID will have the remote ID -# string or '?' if none. The faxmail function will e-mail the fax -# as MIME image/tiff attachments. Comment this out to do -# nothing. Protect with single quotes. - -NOTIFY='faxmail "$REMID" "$f" $FILES | $SENDMAIL $FAXMGR' -# NOTIFY='mail -s "fax/message from $REMID: $FILES" $FAXMGR <$f' -# NOTIFY='lpr $f ; $FAX print $OPT $FILES' - -# The number of rings to wait before answering. - -ANSRINGS=1 - -# If you want to enable fax/data adaptive answer (AA) read the -# efax man page and define DATAINIT to be the options that enable -# AA. Note: AA does not work properly on some (2400/9600) modems -# unless the modem initialization is done at 2400 bps (not -# possible with efax). USR modems do not support modem adaptive -# answer (+FAE=) in Class 1. &C1 enables most modems' DCD line -# so a signal can be sent to shells when a call is dropped. You -# must also define DCMD (see below). - -DATAOPT="-j&C1 -j+FCLASS=0 -jS7=30" -# DATAINIT="$DATAOPT -j+FAE=1" # Class 1 modem adaptive answer -# DATAINIT="$DATAOPT -j+FAA=1" # Class 2[.0] modem adaptive answer -# DATAINIT="$DATAOPT -oa" # software adaptive answer -# DATAINIT="$DATAOPT" # data-only answer - -# If you have a voice modem and want to answer in voice mode -# define VOICEINIT to be the options that enable voice mode. You -# must also set VCMD below. Voice support is not yet available. - -# VOICEINIT="-j#CLS=8" # Rockwell voice modems -# VOICEINIT="-jM2L2#CLS=8#VLS=4" # with speaker on - -# Argument to exec(2) of "/bin/sh -c" for incoming data calls. -# This command will usually exec getty(8) but can include other -# commands to set up the serial port, etc. Up to 6 %d arguments -# are replaced by the baud rate following the CONNECT response -# from the modem or 19200 if none. If using getty_ps ensure -# /etc/gettydefs has entries for all possible %d values -# (e.g. 19200). Use 'nice' if required to reduce any special -# priority set by NICE. - -DCMD="exec /sbin/getty -h $DEV %d vt100" # for getty_ps (Linux) -# DCMD="exec /sbin/agetty -h $DEV %d vt100" # for agetty (Linux) -# DCMD="exec pppd $DEV %d" # start PPP server - -# Argument to exec(2) of "/bin/sh -c" for incoming voice calls. -# This command will usually be a shell script that interacts with -# the caller by using efone to play/record audio and detect DTMF -# tones. Up to 6 %d arguments are replaced by the modem file -# descriptor. VCMD can "exec fax reanswer" to switch to fax or -# data mode if required. - -FONE=/usr/bin/fone # minimal voice mail -VCMD="exec $FONE %d" - -# The owner.group and mode to which "fax answer" sets the serial -# device. This allows non-root processes to grab the device from -# efax even if a previous process (e.g. login) has changed it. -# Comment out if you don't need to reset device ownership. - -OWNER=root.tty # typical -MODE=666 # anybody -# MODE=660 # only owner & group - -# Regular expression for efax exit codes in log files that will -# *not* be saved. For example, use [145] to ignore exits due to -# `locked' (1), `no modem' (4), and `signal' (5) conditions - -NOLOG='[145]' - -# **************************************************************** -# --- End of user configuration section --- -# **************************************************************** - -# --- source configuration files - -for f in $CONFIGFILES -do - if [ -r $f ] - then - eval "`cat $f`" - fi -done - -# --- set any variables given on command line - -while : ; do - case $# in 0) break ;; esac - case "$1" in [A-Z]*=*) eval $1 ; shift ;; *) break ;; esac -done - -# -------- initialize - -ERR=0 - -$NICE true 2>/dev/null ; case $? in 0) ;; *) NICE="" ;; esac - -# -------- resolve dependencies on command-line arguments - -eval LOCK=\"$LOCK\" # depends on DEV - -# make device name w/o directories - -case $DEV in - */*) DEVN=`echo $DEV|sed -e s./._.g` ;; - *) DEVN=$DEV ;; -esac - -case $PAGE in - letter) PAGEDIM="$PAGE_letter" ;; - legal) PAGEDIM="$PAGE_legal" ;; - a4) PAGEDIM="$PAGE_a4" ;; - *) echo "Error: PAGE=\"${PAGE}\" not valid." ; exit 2 ;; -esac - -# --- check for a command or alias and optional flags - -cmd="" -case $0 in -*/faxlpr|faxlpr) cmd=faxlpr ;; -*) - while : ; do - case $# in 0) case $cmd in '') cmd=receive ;; esac ; break ;; esac - case $1 in - -l) OPT="$OPT -l" ; RES=204x98 ; shift ;; - -h) OPT="$OPT -h" ; RES=204x196 ; shift ;; - -v) OPT="$OPT -v" ; VERB=$VERBLOG ; shift ;; - *) - case $cmd in '') cmd=$1 ; shift ;; *) break ;; esac - ;; - esac - done -;; -esac - -# -------- functions - -faxmail () { - echo "Subject: fax/message from $1" - shift - echo "Content-Type: multipart/mixed; boundary=EFAX_MAIL" - echo "" - echo "--EFAX_MAIL" - echo "Content-Type: text/plain; charset=\"us-ascii\"" - echo "Content-Transfer-Encoding: 7bit" - echo "" - cat $1 - shift - for f in $* - do - echo "--EFAX_MAIL" - echo "Content-Type: image/tiff" - echo "Content-Transfer-Encoding: base64" - echo "" - $EFIX -M <$f - done -} - -# -------- export variables for fone script - -export DEV TSTAMP - -# -------- do the appropriate command - -while : ; do # so we can use `break' to get to the end of the script - -case $cmd in - -# fax answer : clean up logs and exec efax. normally run by init(8). - - answer) - - if cd $FAXDIR ; then : - else - echo "Error: $FAX cannot cd to $FAXDIR" >>$CONSOLE - sleep 30 - break - fi - - while [ -f ${DEVN}.stop ] ; do sleep 15 ; done - - umask $UMASK - case $OWNER in '') ;; *) chown $OWNER /dev/$DEV ;; esac - case $MODE in '') ;; *) chmod $MODE /dev/$DEV ;; esac - - for f in ${DEVN}.[0-9]* # clean up old log files - do - egrep "done, returning $NOLOG|exec'ing" $f >/dev/null 2>/dev/null - case $? in - 0) - $RM $f - ;; - 1) FILES=`sed -n -e '/received ->/s/^.*-> \(.*\)$/\1/p' $f` - FILES=`echo $FILES` - REMID=`sed -n -e '/remote ID ->/s/^.*-> \(.*\)$/\1/p' \ - -e tok -e b -e ':ok' -e q $f` - case $REMID in '') REMID='?' ;; esac - eval $NOTIFY - echo >>${LOGDIR}/${DEVN}.log - cat $f >>${LOGDIR}/${DEVN}.log - $RM $f - ;; - esac - done - - exec $NICE $EFAX -v "" -v "$VERBLOG" -d/dev/$DEV $INIT $SPKR \ - $CLASSINIT $FCINIT $RXINIT $LOCK \ - $RXCAP -l "$FROM" $RESET \ - $DATAINIT -g "$DCMD" $VOICEINIT -e "$VCMD" \ - -jS0=$ANSRINGS -w -s -r "$ANSFNAME" 2>$CONSOLE >${DEVN}.$$ - - echo ERROR: $FAX answer exec failed >>$CONSOLE ; sleep 30 - - break - ;; - - -# fax reanswer : switch from voice mode to fax[/data] mode - - reanswer) - - # we should already be in the fax spool directory, the - # device locked, the modem answered and initialized in - # voice mode and stdout/stderr redirected appropriately - - umask $UMASK - - exec $NICE $EFAX -v "" -v "$VERBLOG" -d/dev/$DEV '-i#CLS=0' \ - $CLASSINIT $FCINIT $RXINIT \ - $RXCAP -l "$FROM" $RESET \ - $DATAINIT -g "$DCMD" \ - -r "$ANSFNAME" - - echo ERROR: $FAX reanswer exec failed >>$CONSOLE ; sleep 30 - - break - ;; - -# fax queue : list received fax files - - q*) - - cd $FAXDIR - case $? in 0) ;; *) echo "cannot cd to $FAXDIR" ; break ;; esac - - for f in [0-9]*.[0-9][0-9][0-9] [0-9]*.v - do - if [ -r $f ] - then - echo - echo Fax files in `pwd` : - echo - $LS -l [0-9]*.[0-9][0-9][0-9] [0-9]*.v - echo - break - fi - done - - break - ;; - -# faxlpr : get phone number and user from current cf* file and run fax send - - faxlpr) - - cd $FAXDIR # the lpr spool directory for printer 'fax' - case $? in 0) ;; *) echo "$0: cannot cd to $FAXDIR" ; break ;; esac - - test -r lock - case $? in 0) ;; *) echo "$0: can't read lock file" ; break ;; esac - - cfile=`tail -1 lock` - - test -r $cfile - case $? in 0) ;; *) echo "$0: can't read control file" ; break ;; esac - - cfile=`cat $cfile` - - num=` echo "$cfile" | sed -e /^[^J]/d -e s/.//` - host=`echo "$cfile" | sed -e /^[^H]/d -e s/.//` - user=`echo "$cfile" | sed -e /^[^P]/d -e s/.//` - - test "$num" - case $? in 0) ;; *) echo "$0: can't read phone number" ; break ;; esac - - cat - >> fax$$ # save in a file - - l=`$FAX send "$num" fax$$` - - case $? in - 0) echo "$l" | mail -s "fax to $num succeeded" $user@$host ;; - *) echo "$l" | mail -s "fax to $num failed " $user@$host ;; - esac - - $RM fax$$ fax$$.??? - - break - ;; - -# fax start/stop/status : manage fax receive daemon - - start|stop|st*) # common section - - cd $FAXDIR ; - case $? in 0) ;; *) echo "cannot cd to $FAXDIR" ; break ;; esac - - n= ; for f in ${DEVN}.[0-9]* ; do logfile="$f" ; n=x$n ; done - - case $n in - xx*) echo Warning: multiple logs for $DEV : ; ls ${DEVN}.[0-9]* ;; - esac - - case $logfile in - *\*) echo no fax answer process for device $DEV ; break ;; - esac - - efaxpid=`echo $logfile | sed -e "s/${DEVN}\.//g"` - - case $cmd in - -# fax start - remove stop file so fax answer will continue - - start) - - if [ ! -w . ] ; then echo "can't write `pwd`" ; break ; fi - $RM ${DEVN}.stop - break - ;; - -# fax stop - make a stop file and kill current fax answer daemon - - stop) - - if [ ! -w . ] ; then echo "can't write `pwd`" ; break ; fi - touch ${DEVN}.stop - echo stopping fax daemon for ${DEV}, pid=$efaxpid - kill -HUP $efaxpid - break - ;; - - -# fax status - display pid and log file for current daemon - - st*) - - if [ -f ${DEVN}.stop ] ; then stat="(set to stop)" ; fi - - if ps -u $efaxpid 2>/dev/null ; then : - else - echo "NOT ACTIVE (last daemon was $efaxpid)" - fi - - echo - echo from: $FAXDIR/$logfile - echo - - egrep "Warning|Error|starts|activity|opened|received -|done" $logfile - - case $# in - 0) ;; *) echo "---------------" ; sleep $1 ; exec $FAX status $1 ;; - esac - - break - ;; - - esac # common section - ;; - -# fax makefont : rasterize a PS font into a 256-character-wide bitmap - - makefont) - - if [ $# -lt 5 ] - then - echo Usage: fax makefont fontname fontsize \ - cellwidth cellheight filename - echo "(cellwidth and cellheight in pixels, fontsize in points)" - echo "Example: fax makefont Courier-Bold 8 16 24 efaxfont" - echo "will make an 8pt font (there are about 3 pixels per pt)" - exit 1 - fi - - FNTFMT=pbmraw # format for font files - # FNTFMT=tiffg3 # smaller, available with Ghostscript 3.x or later - - pelwidth=`expr 256 \* $3` - gs -q -sDEVICE=$FNTFMT -r204x196 -g${pelwidth}x$4 \ - -sOutputFile=$5 - </dev/null ) - ;; - II*|MM*|P4*) - echo "$1 is an image file..." - $EFIX -ve -otiffg3 -p$PAGEDIM -r$RES -n $1.%03d $1 - ;; - *) echo "$1 is text..." - $EFIX -ve -otiffg3 -p$PAGEDIM -r$RES -n $1.%03d $TEXTFONT $1 - ;; - esac - - break - ;; - -# fax send : fax files to given number, converting first if necessary - - s*) - - case $# in - 0) echo "missing phone number to call" ; ERR=2 ; break ;; - esac - - # look up names - - case $1 in - [A-Za-z]*) - for f in $DIRFILES ; do - if [ -r $f ] ; then TELNO=`$LOOKUP` ; fi - case "$TELNO" in '') continue ;; *) break ;; esac - done - case "$TELNO" in - '') echo "Name lookup for $1 failed" ; ERR=2 ; break ;; - *) echo "Lookup: $1 = $TELNO" ;; - esac - ;; - *) TELNO="$1" ;; - esac - - shift - - case "$TO" in '') TO="$TELNO" ;; *) ;; esac - - TELNO=`echo $TELNO|sed "s/[ ()][ ()]*//g"` - - # handle manual dialing and number->dial string conversions - - case "$TELNO" in - -m*) MANINIT="-jX3" ; TELNO="" ;; - +*) TELNO=`echo $TELNO | $TELCVT` ;; - esac - - case $TELNO in - '') ;; - *) TELNO="${DIALPREFIX}${TELNO}${DIALSUFFIX}" ;; - esac - - # use `fax make' to convert files if they need to be updated - - FILES="" - for f in $* ; do - case $f in -) FILES="$FILES -" ; continue ;; esac - if [ ! -r $f ] ; then - echo "can't read file $f" ; ERR=2 ; break 2 - fi - case $f in - *.[0-9][0-9][0-9]) FILES="$FILES $f" ;; # skip image files - *) if echo ${f}.001: $f \; x | make -r -q -f - ; then - echo ${f}.nnn is up-to-date - else - $RM ${f}.[0-9][0-9][0-9] - $FAX make $OPT $f - fi - if [ -r $f.001 ] ; then - FILES="$FILES $f.[0-9][0-9][0-9]" - else # something's wrong, catch it later - FILES="$FILES $f.001" - fi - ;; - esac - done - - # check that all files are OK - - for f in $FILES ; do - case $f in -) continue ;; esac - if [ ! -r $f ] ; then - echo "can't read file $f" ; ERR=2 ; break 2 - fi - done - - # send it - - for s in 0 $FAILRETRIES ; do - - case $s in - 0) ;; *) echo "Will try again in $s seconds" ; sleep $s ;; - esac - -# logfile=`$TSTAMP`.log - logfile="$TELNO".log - - for t in 0 $BUSYRETRIES ; do - - case $t in - 0) ;; *) echo "Will try again in $t seconds" ; sleep $t ;; - esac - - DATE=`eval "$DATECMD"` - eval HDR=\"$HDR\" - - $NICE $EFAX -v "$VERB" -v "$VERBLOG" \ - -d/dev/$DEV $LOCK $INIT $SPKR \ - $CLASSINIT $FCINIT $TXINIT \ - $TXCAP -l "$FROM" $RESET $HDRFONT -h "$HDR" \ - $MANINIT -t "$TELNO" $FILES >$logfile - - ERR=$? - - case $ERR in - 0) $RM $logfile ; break 2 ;; - 1) echo Busy... ;; - *) echo "There were errors (see ${logfile})." ; break ;; - esac - - done - - SENT=` sed -n -e '/sent ->/s/^.*-> \([^ ]*\).*/\1/p' $logfile` - FILES=`sed -n -e '/failed ->/s/^.*-> \([^ ]*\).*/\1/p' $logfile` - case $SENT in '') break ;; esac - case $FILES in '') break ;; esac - echo Failed... - - done - - break - ;; - -# fax hangup : hang up the phone - - hangup*) - $NICE exec $EFAX -v $VERB -d/dev/$DEV $LOCK -iZ -T - break - ;; - -# fax fone : open modem device and exec fone script - - fone) - - cd $FAXDIR - case $? in 0) ;; *) echo "cannot cd to $FAXDIR" ; break ;; esac - - $NICE exec $EFAX -v $VERB -d/dev/$DEV $LOCK $INIT \ - -j#CLS=8 -a#VLS=1 -e "$VCMD $*" - - break - ;; - -# fax (rm|print|view) commands possibly on files in spool directory - - rm|p*|v*) # common code - - # switch to spool directory if first file is found there - - for f in $FAXDIR/$1 ; do - if test -r $f ; then cd $FAXDIR ; break ; fi - done - - for f in $* ; do - case $cmd in - - rm) # fax rm : delete files - if $RM $f ; then echo deleted $f ; fi - ;; - - p*) # fax print : print files - echo "$f ... " - eval "$PRINT | $PRCMD" - ;; - - v*) # fax view : display images - echo "$f ... " - eval "$VIEW | $VIEWCMD" - ;; - - esac - done - - break - ;; - -# fax [receive] : answer phone now and receive fax files - - r*) - - case $1 in '') file=`$TSTAMP` ;; *) file=$1 ;; esac - logfile=${file}.log - - $NICE $EFAX -v "$VERB" -v "$VERBLOG" -d/dev/$DEV $LOCK $INIT $SPKR \ - $CLASSINIT $FCINIT $RXINIT \ - $RXCAP -l "$FROM" $RESET \ - -r $file >$logfile - - ERR=$? - - case $ERR in - 0) $RM $logfile ; break ;; - 1) echo Busy... ;; - *) echo "There were errors (see ${logfile})." ; break ;; - esac - - break - ;; - -# fax new : create a cover page for a fax (needs work) - - new) - - fname=${1-new.fax} - DATE=`date "+%B %d %Y"` - cat >$fname 2>/dev/null << EOF - - ________________________________________________ - - FAX COVER PAGE - ________________________________________________ - - To: x - fax: - - ________________________________________________ - - From: $NAME - fax: $FROM - - Date: $DATE - - Pages: 1 (including this page) - - ________________________________________________ - -EOF - ${VISUAL-${EDITOR-vi}} $fname - - break - ;; - -# fax help : show command arguments - - -\?|\?|-h*|h*) - -cat 1>&2 <