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