xref: /plan9-contrib/sys/src/cmd/fax/subr.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
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 *format, ...)
11 {
12 	char buf[512];
13 
14 	if(vflag){
15 		doprint(buf, buf+sizeof(buf), format, (&format+1));
16 		syslog(0, "fax", buf);
17 	}
18 }
19 
20 void
21 error(char *format, ...)
22 {
23 	char buf[512];
24 	int n;
25 
26 	n = sprint(buf, "%s: ", argv0);
27 	doprint(buf+n, buf+sizeof(buf)-n, format, (&format+1));
28 	fprint(2, buf);
29 	if(vflag)
30 		print(buf+n);
31 	exits("error");
32 }
33 
34 static char *errors[] = {
35 	[Eok]		"no error",
36 	[Eattn]		"can't get modem's attention",
37 	[Enoanswer]	"Retry, no answer or busy",
38 	[Enoresponse]	"Retry, no response from modem",
39 	[Eincompatible]	"Retry, incompatible",
40 	[Esys]		"Retry, system call error",
41 	[Eproto]	"Retry, fax protocol botch",
42 };
43 
44 int
45 seterror(Modem *m, int error)
46 {
47 	if(error == Esys)
48 		sprint(m->error, "%s: %r", errors[Esys]);
49 	else
50 		strcpy(m->error, errors[error]);
51 	verbose("seterror: %s", m->error);
52 	return error;
53 }
54 
55 void
56 faxrlog(Modem *m, int ok)
57 {
58 	char buf[1024];
59 	int n;
60 
61 	n = sprint(buf, "receive %lud %c %d", m->time, ok == Eok ? 'Y': 'N', m->pageno-1);
62 	if(ok == Eok && (m->valid & Vftsi))
63 		sprint(buf+n, " %s", m->ftsi);
64 	syslog(0, "fax", buf);
65 }
66