|
|
1.1 root 1: /*
2: *
3: * UNIX debugger
4: *
5: */
6:
7: #include "defs.h"
8:
9: char line[LINSIZ];
10: extern int infile;
11: char *lp;
12: char peekc,lastc = EOR;
13: int eof;
14:
15: /* input routines */
16:
17: eol(c)
18: char c;
19: {
20: return(c==EOR || c==';');
21: }
22:
23: int
24: rdc()
25: {
26: do {
27: readchar();
28: } while (lastc==SPC || lastc==TB);
29: return(lastc);
30: }
31:
32: reread()
33: {
34: peekc = lastc;
35: }
36:
37: clrinp()
38: {
39:
40: lp = 0;
41: peekc = 0;
42: }
43:
44: int
45: readchar()
46: {
47: register char *p;
48: if (eof)
49: lastc=0;
50: else if (peekc) {
51: lastc = peekc;
52: peekc = 0;
53: }
54: else {
55: if (lp==0) {
56: for (p = line; p < &line[LINSIZ-1]; p++) {
57: eof = read(infile, p, 1) <= 0;
58: if (mkfault) {
59: eof = 0;
60: error(0);
61: }
62: if (eof) {
63: p--;
64: break;
65: }
66: if (*p == EOR) {
67: if (p <= line)
68: break;
69: if (p[-1] != '\\')
70: break;
71: p -= 2;
72: }
73: }
74: *++p = 0;
75: lp = line;
76: }
77: if ((lastc = *lp) != 0)
78: lp++;
79: }
80: return(lastc);
81: }
82:
83: nextchar()
84: {
85: if (eol(rdc())) {
86: reread();
87: return(0);
88: }
89: return(lastc);
90: }
91:
92: quotchar()
93: {
94: if (readchar()=='\\')
95: return(readchar());
96: else if (lastc=='\'')
97: return(0);
98: else
99: return(lastc);
100: }
101:
102: getformat(deformat)
103: char *deformat;
104: {
105: register char *fptr;
106: register BOOL quote;
107:
108: fptr=deformat;
109: quote=FALSE;
110: while ((quote ? readchar()!=EOR : !eol(readchar())))
111: if ((*fptr++ = lastc)=='"')
112: quote = ~quote;
113: lp--;
114: if (fptr!=deformat)
115: *fptr = '\0';
116: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.