]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/fax/subr.c
Import sources from 2011-03-30 iso image
[plan9front.git] / sys / src / cmd / fax / subr.c
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4
5 #include "modem.h"
6
7 int vflag;
8
9 void
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
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
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
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 }