xref: /plan9/sys/src/cmd/proof/main.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier #include	<u.h>
2*3e12c5d1SDavid du Colombier #include	<libc.h>
3*3e12c5d1SDavid du Colombier #include	<libg.h>
4*3e12c5d1SDavid du Colombier #include	<bio.h>
5*3e12c5d1SDavid du Colombier #include	"proof.h"
6*3e12c5d1SDavid du Colombier 
7*3e12c5d1SDavid du Colombier int Mode = DorS;
8*3e12c5d1SDavid du Colombier 
9*3e12c5d1SDavid du Colombier Rectangle rpage = { 0, 0, 850, 1150 };
10*3e12c5d1SDavid du Colombier char devname[64];
11*3e12c5d1SDavid du Colombier double mag = DEFMAG;
12*3e12c5d1SDavid du Colombier int dbg = 0;
13*3e12c5d1SDavid du Colombier char *track = 0;
14*3e12c5d1SDavid du Colombier Biobuf bin;
15*3e12c5d1SDavid du Colombier char libfont[100] = "/lib/font/bit";
16*3e12c5d1SDavid du Colombier char mapfile[100] = "MAP";
17*3e12c5d1SDavid du Colombier char *mapname = "MAP";
18*3e12c5d1SDavid du Colombier 
19*3e12c5d1SDavid du Colombier void
20*3e12c5d1SDavid du Colombier main(int argc, char *argv[])
21*3e12c5d1SDavid du Colombier {
22*3e12c5d1SDavid du Colombier 	char c;
23*3e12c5d1SDavid du Colombier 	int dotrack = 0;
24*3e12c5d1SDavid du Colombier 
25*3e12c5d1SDavid du Colombier 	for (argv++; *argv && (**argv == '-'); argv++)
26*3e12c5d1SDavid du Colombier 		switch(argv[0][1]) {
27*3e12c5d1SDavid du Colombier 		case 'm':	/* magnification */
28*3e12c5d1SDavid du Colombier 			mag = atof(&argv[0][2]);
29*3e12c5d1SDavid du Colombier 			if (mag < 0.1 || mag > 10){
30*3e12c5d1SDavid du Colombier 				fprint(2, "ridiculous mag argument ignored\n");
31*3e12c5d1SDavid du Colombier 				mag = DEFMAG;
32*3e12c5d1SDavid du Colombier 			}
33*3e12c5d1SDavid du Colombier 			break;
34*3e12c5d1SDavid du Colombier 		case '/':
35*3e12c5d1SDavid du Colombier 			nview = atoi(&argv[0][2]);
36*3e12c5d1SDavid du Colombier 			if (nview < 1 || nview > MAXVIEW)
37*3e12c5d1SDavid du Colombier 				nview = 1;
38*3e12c5d1SDavid du Colombier 			break;
39*3e12c5d1SDavid du Colombier 		case 'x':
40*3e12c5d1SDavid du Colombier 			xyoffset.x += atoi(&argv[0][2]) * 100;
41*3e12c5d1SDavid du Colombier 			break;
42*3e12c5d1SDavid du Colombier 		case 'y':
43*3e12c5d1SDavid du Colombier 			xyoffset.y += atoi(&argv[0][2]) * 100;
44*3e12c5d1SDavid du Colombier 			break;
45*3e12c5d1SDavid du Colombier 		case 'M':	/* change MAP file */
46*3e12c5d1SDavid du Colombier 			if (argv[0][2])
47*3e12c5d1SDavid du Colombier 				strcpy(mapname, &argv[0][2]);
48*3e12c5d1SDavid du Colombier 			else {
49*3e12c5d1SDavid du Colombier 				strcpy(mapname, argv[1]);
50*3e12c5d1SDavid du Colombier 				argv++;
51*3e12c5d1SDavid du Colombier 				argc--;
52*3e12c5d1SDavid du Colombier 			}
53*3e12c5d1SDavid du Colombier 			break;
54*3e12c5d1SDavid du Colombier 		case 'F':	/* change /lib/font/bit directory */
55*3e12c5d1SDavid du Colombier 			if (argv[0][2])
56*3e12c5d1SDavid du Colombier 				strcpy(libfont, &argv[0][2]);
57*3e12c5d1SDavid du Colombier 			else {
58*3e12c5d1SDavid du Colombier 				strcpy(libfont, argv[1]);
59*3e12c5d1SDavid du Colombier 				argv++;
60*3e12c5d1SDavid du Colombier 				argc--;
61*3e12c5d1SDavid du Colombier 			}
62*3e12c5d1SDavid du Colombier 			break;
63*3e12c5d1SDavid du Colombier 		case 'd':
64*3e12c5d1SDavid du Colombier 			dbg = 1;
65*3e12c5d1SDavid du Colombier 			break;
66*3e12c5d1SDavid du Colombier 		case 't':
67*3e12c5d1SDavid du Colombier 			dotrack = 1;
68*3e12c5d1SDavid du Colombier 			break;
69*3e12c5d1SDavid du Colombier 		default:
70*3e12c5d1SDavid du Colombier 			fprint(2, "unknown option '%s' ignored!\n", *argv);
71*3e12c5d1SDavid du Colombier 			break;
72*3e12c5d1SDavid du Colombier 		}
73*3e12c5d1SDavid du Colombier 	if (*argv) {
74*3e12c5d1SDavid du Colombier 		close(0);
75*3e12c5d1SDavid du Colombier 		if (open(*argv, 0) == -1) {
76*3e12c5d1SDavid du Colombier 			perror(*argv);
77*3e12c5d1SDavid du Colombier 			exits("open failure");
78*3e12c5d1SDavid du Colombier 		}
79*3e12c5d1SDavid du Colombier 		if(dotrack)
80*3e12c5d1SDavid du Colombier 			track = *argv;
81*3e12c5d1SDavid du Colombier 	}
82*3e12c5d1SDavid du Colombier 	Binit(&bin, 0, OREAD);
83*3e12c5d1SDavid du Colombier 	sprint(mapfile, "%s/%s", libfont, mapname);
84*3e12c5d1SDavid du Colombier 	readmapfile(mapfile);
85*3e12c5d1SDavid du Colombier 	for (c = 0; c < NFONT; c++)
86*3e12c5d1SDavid du Colombier 		loadfontname(c, "??");
87*3e12c5d1SDavid du Colombier 	mapscreen();
88*3e12c5d1SDavid du Colombier 	clearscreen();
89*3e12c5d1SDavid du Colombier 	readpage();
90*3e12c5d1SDavid du Colombier }
91