xref: /plan9/sys/src/cmd/usb/print/main.c (revision ed868a7c1f0ac853ba7f6fe1cfc03d41d6ae4523)
1906943f9SDavid du Colombier /*
2906943f9SDavid du Colombier  * usb/print - usb printer
3906943f9SDavid du Colombier  */
4906943f9SDavid du Colombier #include <u.h>
5906943f9SDavid du Colombier #include <libc.h>
6906943f9SDavid du Colombier #include <thread.h>
7906943f9SDavid du Colombier #include "usb.h"
8906943f9SDavid du Colombier 
9906943f9SDavid du Colombier enum
10906943f9SDavid du Colombier {
11906943f9SDavid du Colombier 	Arglen = 80,
12906943f9SDavid du Colombier };
13906943f9SDavid du Colombier 
14906943f9SDavid du Colombier static void
usage(void)15906943f9SDavid du Colombier usage(void)
16906943f9SDavid du Colombier {
17*ed868a7cSDavid du Colombier 	fprint(2, "usage: %s [-d] [-N nb] [dev...]\n", argv0);
18906943f9SDavid du Colombier 	threadexitsall("usage");
19906943f9SDavid du Colombier }
20906943f9SDavid du Colombier 
21906943f9SDavid du Colombier static int csps[] = { 0x020107, 0 };
22906943f9SDavid du Colombier 
23906943f9SDavid du Colombier extern int printmain(Dev*, int, char**);
24906943f9SDavid du Colombier 
25906943f9SDavid du Colombier void
threadmain(int argc,char ** argv)26906943f9SDavid du Colombier threadmain(int argc, char **argv)
27906943f9SDavid du Colombier {
28906943f9SDavid du Colombier 	char args[Arglen];
29*ed868a7cSDavid du Colombier 	char *as;
30906943f9SDavid du Colombier 	char *ae;
31906943f9SDavid du Colombier 
32906943f9SDavid du Colombier 	quotefmtinstall();
33906943f9SDavid du Colombier 	ae = args+sizeof(args);
34*ed868a7cSDavid du Colombier 	as = seprint(args, ae, "print");
35906943f9SDavid du Colombier 	ARGBEGIN{
36906943f9SDavid du Colombier 	case 'd':
37906943f9SDavid du Colombier 		usbdebug++;
38906943f9SDavid du Colombier 		break;
39*ed868a7cSDavid du Colombier 	case 'N':
40*ed868a7cSDavid du Colombier 		as = seprint(as, ae, " -N %s", EARGF(usage()));
41*ed868a7cSDavid du Colombier 		break;
42906943f9SDavid du Colombier 	default:
43906943f9SDavid du Colombier 		usage();
44906943f9SDavid du Colombier 	}ARGEND
45906943f9SDavid du Colombier 
46906943f9SDavid du Colombier 	rfork(RFNOTEG);
47906943f9SDavid du Colombier 	threadsetgrp(threadid());
48906943f9SDavid du Colombier 	fmtinstall('U', Ufmt);
49906943f9SDavid du Colombier 	startdevs(args, argv, argc, matchdevcsp, csps, printmain);
50906943f9SDavid du Colombier 	threadexits(nil);
51906943f9SDavid du Colombier }
52