|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)0.args.c 4.1 (Berkeley) 2/11/83";
3: #endif not lint
4:
5: #include <stdio.h>
6: #
7: #include "def.h"
8: int errflag;
9: FILE *infd;
10:
11:
12: int intcase=1, arbcase=0;
13: int exitsize=0; /* max number of nodes to be left in loop without iterating */
14: int maxnode=400; /* max number of nodes */
15: int maxhash=347; /* prime number = size of hash table */
16: int progress=0; /* if not 0, print line number every n lines, n = progress */
17: int labinit=10; /* labels generated starting with labinit */
18: int labinc=10; /* labels increase by labinc */
19: int inputform=0; /* = 0 if freeform input, 1 if standard form input */
20: int debug=0;
21: int levbrk=1; /* true implies multilevel breaks; false implies single-level breaks only */
22: int levnxt=1; /* true implies multilevel nexts; false implies single-level nexts only */
23:
24:
25: int maxprogsw=12; /* number of program switches which can be set */
26: char *progsw[] = {"i", "a",
27: "e", "m",
28: "h", "p",
29: "t", "c",
30: "s", "d",
31: "b", "n"
32: };
33:
34:
35: int *swval[] = {&intcase, &arbcase,
36: &exitsize, &maxnode,
37: &maxhash, &progress,
38: &labinit, &labinc,
39: &inputform, &debug,
40: &levbrk, &levnxt
41: };
42:
43:
44: char *getargs(argc, argv)
45: int argc; char *argv[];
46: {
47: int n, infile;
48: infile = 0;
49:
50: for (n = 1; n < argc; ++n)
51: {
52: if (argv[n][0] == '-')
53: setsw(&argv[n][1]);
54: else
55: {
56: if (infile != 0)
57: error("multiple input files - using first one: ", argv[infile],"");
58: else
59: infile = n;
60: }
61: }
62: if (errflag)
63: exit(1);
64: if (!infile) faterr("no input file","","");
65: infd = fopen(argv[infile],"r");
66: if (infd == NULL)
67: faterr("can't open input file:",argv[infile],"");
68: return;
69: }
70:
71: setsw(str)
72: char *str;
73: {
74: int i, val, swnum;
75: #define maxtemp 15
76: char temp[maxtemp];
77: for (i = 0; 'a' <= str[i] && str[i] <= 'z'; ++i)
78: {
79: if (i >= maxtemp)
80: {
81: error("invalid switch:",str,"");
82: errflag = 1;
83: }
84: temp[i] = str[i];
85: }
86: temp[i] = '\0';
87:
88: swnum = find(temp,progsw,maxprogsw);
89: if (swnum == -1)
90: {
91: error("invalid switch:", str,"");
92: errflag = 1;
93: return;
94: }
95: if (str[i] == '\0')
96: *(swval[swnum]) = !*(swval[swnum]);
97: else
98: {
99: sscanf(&str[i],"%d",&val);
100: *(swval[swnum]) = val;
101: }
102: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.