1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4
5 #include "modem.h"
6
7 int vflag;
8
9 void
verbose(char * fmt,...)10 verbose(char *fmt, ...)
11 {
12 va_list arg;
13 char buf[512];
14
15 if(vflag){
16 va_start(arg, fmt);
17 vseprint(buf, buf+sizeof(buf), fmt, arg);
18 va_end(arg);
19 syslog(0, "fax", buf);
20 }
21 }
22
23 void
error(char * fmt,...)24 error(char *fmt, ...)
25 {
26 va_list arg;
27 char buf[512];
28 int n;
29
30 n = sprint(buf, "%s: ", argv0);
31 va_start(arg, fmt);
32 vseprint(buf+n, buf+sizeof(buf)-n, fmt, arg);
33 va_end(arg);
34 fprint(2, buf);
35 if(vflag)
36 print(buf+n);
37 exits("error");
38 }
39
40 static char *errors[] = {
41 [Eok] "no error",
42 [Eattn] "can't get modem's attention",
43 [Enoanswer] "Retry, no answer or busy",
44 [Enoresponse] "Retry, no response from modem",
45 [Eincompatible] "Retry, incompatible",
46 [Esys] "Retry, system call error",
47 [Eproto] "Retry, fax protocol botch",
48 };
49
50 int
seterror(Modem * m,int error)51 seterror(Modem *m, int error)
52 {
53 if(error == Esys)
54 sprint(m->error, "%s: %r", errors[Esys]);
55 else
56 strcpy(m->error, errors[error]);
57 verbose("seterror: %s", m->error);
58 return error;
59 }
60
61 void
faxrlog(Modem * m,int ok)62 faxrlog(Modem *m, int ok)
63 {
64 char buf[1024];
65 int n;
66
67 n = sprint(buf, "receive %lud %c %d", m->time, ok == Eok ? 'Y': 'N', m->pageno-1);
68 if(ok == Eok && (m->valid & Vftsi))
69 sprint(buf+n, " %s", m->ftsi);
70 syslog(0, "fax", buf);
71 }
72