1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
3219b2ee8SDavid du Colombier #include <bio.h>
4219b2ee8SDavid du Colombier
5219b2ee8SDavid du Colombier #include "modem.h"
6219b2ee8SDavid du Colombier
7219b2ee8SDavid du Colombier int vflag;
8219b2ee8SDavid du Colombier
9219b2ee8SDavid du Colombier void
verbose(char * fmt,...)107dd7cddfSDavid du Colombier verbose(char *fmt, ...)
11219b2ee8SDavid du Colombier {
127dd7cddfSDavid du Colombier va_list arg;
13219b2ee8SDavid du Colombier char buf[512];
14219b2ee8SDavid du Colombier
15219b2ee8SDavid du Colombier if(vflag){
167dd7cddfSDavid du Colombier va_start(arg, fmt);
17*9a747e4fSDavid du Colombier vseprint(buf, buf+sizeof(buf), fmt, arg);
187dd7cddfSDavid du Colombier va_end(arg);
19219b2ee8SDavid du Colombier syslog(0, "fax", buf);
20219b2ee8SDavid du Colombier }
21219b2ee8SDavid du Colombier }
22219b2ee8SDavid du Colombier
23219b2ee8SDavid du Colombier void
error(char * fmt,...)247dd7cddfSDavid du Colombier error(char *fmt, ...)
25219b2ee8SDavid du Colombier {
267dd7cddfSDavid du Colombier va_list arg;
27219b2ee8SDavid du Colombier char buf[512];
28219b2ee8SDavid du Colombier int n;
29219b2ee8SDavid du Colombier
30219b2ee8SDavid du Colombier n = sprint(buf, "%s: ", argv0);
317dd7cddfSDavid du Colombier va_start(arg, fmt);
32*9a747e4fSDavid du Colombier vseprint(buf+n, buf+sizeof(buf)-n, fmt, arg);
337dd7cddfSDavid du Colombier va_end(arg);
34219b2ee8SDavid du Colombier fprint(2, buf);
35219b2ee8SDavid du Colombier if(vflag)
36219b2ee8SDavid du Colombier print(buf+n);
37219b2ee8SDavid du Colombier exits("error");
38219b2ee8SDavid du Colombier }
39219b2ee8SDavid du Colombier
40219b2ee8SDavid du Colombier static char *errors[] = {
41219b2ee8SDavid du Colombier [Eok] "no error",
42219b2ee8SDavid du Colombier [Eattn] "can't get modem's attention",
43219b2ee8SDavid du Colombier [Enoanswer] "Retry, no answer or busy",
44219b2ee8SDavid du Colombier [Enoresponse] "Retry, no response from modem",
45219b2ee8SDavid du Colombier [Eincompatible] "Retry, incompatible",
46219b2ee8SDavid du Colombier [Esys] "Retry, system call error",
47219b2ee8SDavid du Colombier [Eproto] "Retry, fax protocol botch",
48219b2ee8SDavid du Colombier };
49219b2ee8SDavid du Colombier
50219b2ee8SDavid du Colombier int
seterror(Modem * m,int error)51219b2ee8SDavid du Colombier seterror(Modem *m, int error)
52219b2ee8SDavid du Colombier {
53219b2ee8SDavid du Colombier if(error == Esys)
54219b2ee8SDavid du Colombier sprint(m->error, "%s: %r", errors[Esys]);
55219b2ee8SDavid du Colombier else
56219b2ee8SDavid du Colombier strcpy(m->error, errors[error]);
57219b2ee8SDavid du Colombier verbose("seterror: %s", m->error);
58219b2ee8SDavid du Colombier return error;
59219b2ee8SDavid du Colombier }
60219b2ee8SDavid du Colombier
61219b2ee8SDavid du Colombier void
faxrlog(Modem * m,int ok)62219b2ee8SDavid du Colombier faxrlog(Modem *m, int ok)
63219b2ee8SDavid du Colombier {
64219b2ee8SDavid du Colombier char buf[1024];
65219b2ee8SDavid du Colombier int n;
66219b2ee8SDavid du Colombier
67219b2ee8SDavid du Colombier n = sprint(buf, "receive %lud %c %d", m->time, ok == Eok ? 'Y': 'N', m->pageno-1);
68219b2ee8SDavid du Colombier if(ok == Eok && (m->valid & Vftsi))
69219b2ee8SDavid du Colombier sprint(buf+n, " %s", m->ftsi);
70219b2ee8SDavid du Colombier syslog(0, "fax", buf);
71219b2ee8SDavid du Colombier }
72