blob: 2e7ad1e63d30e42e695be1a304f3c7e13daf84fc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#!/bin/rc
# fax [-v] telephone-number recipient [file ...] - send files via fax
rfork e
view=no
stdin=no
fn usage {
echo 'usage: fax [-v] telephone-number recipient [file ...]' >[1=2]
exit usage
}
switch($1){
case -v
view=yes
shift
}
switch ($#*) {
case 0 1
usage
case 2
stdin=yes
}
telno=`{echo $1|sed 's/[ \-]//g'}
shift
if (! ~ $telno [0-9]* +[0-9]*)
usage
# our old phone system needed *9 to get outside; the new one just needs 9
switch($telno){
case ???????
telno='9,'^$telno
case ??????????
telno='9,1'^$telno
case 1??????????
telno='9,'^$telno
case 011*
telno='9,'^$telno
case +*
telno=`{echo $telno | sed 's/\+/9,011/'}
}
recip=$1
shift
script=/tmp/fax.$pid
header=/tmp/faxh.$pid
tmp=/tmp/fax.g3.$pid
tmpin=/tmp/fax.in.$pid
tmpps=/tmp/fax.ps.$pid
tel=`{grep '\) '$user /lib/tel}
myname=`{echo $tel | sed 's/ \(.*//'}
if (~ $#myname 0)
myname=''
ext=`{echo $tel | sed 's/.*\) [^ ]* [^ ]* ([^ ]*).*/\1/'}
fn sigexit {
rm -f $tmp.* $script $header $header.* $tmpin $tmpps
}
fn sigint {
sigexit
exit interrupt
}
# gather input into a file
switch($stdin){
case yes
cat >$tmpin
infiles=$tmpin
case *
infiles=($*)
}
# convert to g3
g3files=()
a=1
for(i in $infiles){
switch(`{file $i}){
case *:*g3* *:*fax*
g3files=($g3files $i)
case *:*postscript
gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.'$#a'.%03d' \
-dNOPAUSE -dQUIET $i quit.ps
g3files=($g3files $tmp.$#a.*)
case *
lp -dstdout $i >$tmpps
gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.'$#a'.%03d' \
-dNOPAUSE -dQUIET $tmpps quit.ps
g3files=($g3files $tmp.$#a.*)
}
a=($a 1) # count by increasing list length
}
pages=`{echo $g3files|wc -w}
# use delimiters that are unlikely to be supplied in arguments
{
echo -n s∮FAXddd∮
echo -n `{date} # treat `{} output list specially
echo ∮
echo s∮FAXFFF∮$"myname^∮
echo s∮FAXEEE∮$"user^∮
echo s∮FAXVVV∮$"ext^∮
echo s∮FAXTTT∮$"recip^∮
echo s∮FAXfff∮$"telno^∮
echo s∮FAXPPP∮$"pages^∮
} >>$script
sed -f $script /sys/lib/fax/h.ps >$header
gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$header'.%03d' \
-dNOPAUSE -dQUIET $header quit.ps
files=()
for(i in $header.* $g3files){
files=($files -f $i)
}
switch($view){
case yes
page $header.* $g3files
case *
upas/qer $files /mail/faxoutqueue fax $user $telno </dev/null
rx fax /sys/lib/fax/faxgoose </dev/null
}
|