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