1: static char sccsid[] = "@(#)main.c 4.3 4/1/82";
2: /*
3: * adb - main command loop and error/interrupt handling
4: */
5: #include "defs.h"
6:
7: MSG NOEOR;
8:
9: INT mkfault;
10: INT executing;
11: INT infile;
12: CHAR *lp;
13: L_INT maxoff;
14: L_INT maxpos;
15: ADDR sigint;
16: ADDR sigqit;
17: INT wtflag;
18: L_INT maxfile;
19: STRING errflg;
20: L_INT exitflg;
21:
22: CHAR lastc;
23: INT eof;
24:
25: INT lastcom;
26:
27: long maxoff = MAXOFF;
28: long maxpos = MAXPOS;
29: char *Ipath = "/usr/lib/adb";
30:
31: main(argc, argv)
32: register char **argv;
33: int argc;
34: {
35:
36: mkioptab();
37: another:
38: if (argc>1) {
39: if (eqstr("-w", argv[1])) {
40: wtflag = 2; /* suitable for open() */
41: argc--, argv++;
42: goto another;
43: }
44: if (eqstr("-k", argv[1])) {
45: kernel = 1;
46: argc--, argv++;
47: goto another;
48: }
49: if (argv[1][0] == '-' && argv[1][1] == 'I') {
50: Ipath = argv[1]+2;
51: argc--, argv++;
52: }
53: }
54: if (argc > 1)
55: symfil = argv[1];
56: if (argc > 2)
57: corfil = argv[2];
58: xargc = argc;
59: setsym(); setcor(); setvar();
60:
61: if ((sigint=signal(SIGINT,SIG_IGN)) != SIG_IGN) {
62: sigint = fault;
63: signal(SIGINT, fault);
64: }
65: sigqit = signal(SIGQUIT, SIG_IGN);
66: setexit();
67: if (executing)
68: delbp();
69: executing = 0;
70: for (;;) {
71: flushbuf();
72: if (errflg) {
73: printf("%s\n", errflg);
74: exitflg = errflg;
75: errflg = 0;
76: }
77: if (mkfault) {
78: mkfault=0;
79: printc('\n');
80: prints(DBNAME);
81: }
82: lp=0; rdc(); lp--;
83: if (eof) {
84: if (infile) {
85: iclose(-1, 0); eof=0; reset();
86: } else
87: done();
88: } else
89: exitflg = 0;
90: command(0, lastcom);
91: if (lp && lastc!='\n')
92: error(NOEOR);
93: }
94: }
95:
96: done()
97: {
98: endpcs();
99: exit(exitflg);
100: }
101:
102: L_INT
103: round(a,b)
104: REG L_INT a, b;
105: {
106: REG L_INT w;
107: w = (a/b)*b;
108: IF a!=w THEN w += b; FI
109: return(w);
110: }
111:
112: /*
113: * If there has been an error or a fault, take the error.
114: */
115: chkerr()
116: {
117: if (errflg || mkfault)
118: error(errflg);
119: }
120:
121: /*
122: * An error occurred; save the message for later printing,
123: * close open files, and reset to main command loop.
124: */
125: error(n)
126: char *n;
127: {
128: errflg = n;
129: iclose(0, 1); oclose();
130: reset();
131: }
132:
133: /*
134: * An interrupt occurred; reset the interrupt
135: * catch, seek to the end of the current file
136: * and remember that there was a fault.
137: */
138: fault(a)
139: {
140: signal(a, fault);
141: lseek(infile, 0L, 2);
142: mkfault++;
143: }
Defined functions
done
defined in line
96; used 2 times
error
defined in line
125; used 37 times
- in line 92,
118
- in /usr/src/bin/adb/access.c line
77
- in /usr/src/bin/adb/command.c line
112,
131,
149,
187,
212
- in /usr/src/bin/adb/expr.c line
79,
112,
149,
157,
189,
197-202(2),
219,
289
- in /usr/src/bin/adb/format.c line
79,
85,
124,
253,
291,
316
- in /usr/src/bin/adb/input.c line
41
- in /usr/src/bin/adb/output.c line
381
- in /usr/src/bin/adb/pcs.c line
52,
67,
81,
89,
112-116(2)
- in /usr/src/bin/adb/print.c line
155,
173,
354,
371
- in /usr/src/bin/adb/runpcs.c line
140-145(2)
main
defined in line
31;
never used
Defined variables
Ipath
defined in line
29; used 1 times
sccsid
defined in line
1;
never used