xref: /plan9/sys/src/cmd/fax/receive.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 static Modem modems[1];
8*219b2ee8SDavid du Colombier 
9*219b2ee8SDavid du Colombier static char *spool = "/mail/faxqueue";
10*219b2ee8SDavid du Colombier static char *type = "default";
11*219b2ee8SDavid du Colombier static char *receiverc = "/sys/lib/fax/receiverc";
12*219b2ee8SDavid du Colombier 
13*219b2ee8SDavid du Colombier static void
receivedone(Modem * m,int ok)14*219b2ee8SDavid du Colombier receivedone(Modem *m, int ok)
15*219b2ee8SDavid du Colombier {
16*219b2ee8SDavid du Colombier 	char *argv[10], *p, time[16], pages[16];
17*219b2ee8SDavid du Colombier 	int argc;
18*219b2ee8SDavid du Colombier 
19*219b2ee8SDavid du Colombier 	faxrlog(m, ok);
20*219b2ee8SDavid du Colombier 	if(ok != Eok)
21*219b2ee8SDavid du Colombier 		return;
22*219b2ee8SDavid du Colombier 
23*219b2ee8SDavid du Colombier 	argc = 0;
24*219b2ee8SDavid du Colombier 	if(p = strrchr(receiverc, '/'))
25*219b2ee8SDavid du Colombier 		argv[argc++] = p+1;
26*219b2ee8SDavid du Colombier 	else
27*219b2ee8SDavid du Colombier 		argv[argc++] = receiverc;
28*219b2ee8SDavid du Colombier 	sprint(time, "%lud.%d", m->time, m->pid);
29*219b2ee8SDavid du Colombier 	argv[argc++] = time;
30*219b2ee8SDavid du Colombier 	argv[argc++] = "Y";
31*219b2ee8SDavid du Colombier 	sprint(pages, "%d", m->pageno-1);
32*219b2ee8SDavid du Colombier 	argv[argc++] = pages;
33*219b2ee8SDavid du Colombier 	if(m->valid & Vftsi)
34*219b2ee8SDavid du Colombier 		argv[argc++] = m->ftsi;
35*219b2ee8SDavid du Colombier 	argv[argc] = 0;
36*219b2ee8SDavid du Colombier 	exec(receiverc, argv);
37*219b2ee8SDavid du Colombier 	exits("can't exec");
38*219b2ee8SDavid du Colombier }
39*219b2ee8SDavid du Colombier 
40*219b2ee8SDavid du Colombier static void
usage(void)41*219b2ee8SDavid du Colombier usage(void)
42*219b2ee8SDavid du Colombier {
43*219b2ee8SDavid du Colombier 	fprint(2, "%s: usage: %s [-v] [-s dir]\n", argv0, argv0);
44*219b2ee8SDavid du Colombier 	exits("usage");
45*219b2ee8SDavid du Colombier }
46*219b2ee8SDavid du Colombier 
47*219b2ee8SDavid du Colombier void
main(int argc,char * argv[])48*219b2ee8SDavid du Colombier main(int argc, char *argv[])
49*219b2ee8SDavid du Colombier {
50*219b2ee8SDavid du Colombier 	Modem *m;
51*219b2ee8SDavid du Colombier 
52*219b2ee8SDavid du Colombier 	m = &modems[0];
53*219b2ee8SDavid du Colombier 
54*219b2ee8SDavid du Colombier 	ARGBEGIN{
55*219b2ee8SDavid du Colombier 	case 'v':
56*219b2ee8SDavid du Colombier 		vflag = 1;
57*219b2ee8SDavid du Colombier 		break;
58*219b2ee8SDavid du Colombier 
59*219b2ee8SDavid du Colombier 	case 's':
60*219b2ee8SDavid du Colombier 		spool = ARGF();
61*219b2ee8SDavid du Colombier 		break;
62*219b2ee8SDavid du Colombier 
63*219b2ee8SDavid du Colombier 	default:
64*219b2ee8SDavid du Colombier 		usage();
65*219b2ee8SDavid du Colombier 		break;
66*219b2ee8SDavid du Colombier 
67*219b2ee8SDavid du Colombier 	}ARGEND
68*219b2ee8SDavid du Colombier 
69*219b2ee8SDavid du Colombier 	initmodem(m, 0, -1, type, 0);
70*219b2ee8SDavid du Colombier 	receivedone(m, faxreceive(m, spool));
71*219b2ee8SDavid du Colombier 
72*219b2ee8SDavid du Colombier 	exits(0);
73*219b2ee8SDavid du Colombier }
74