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