Research V7 development
[unix-history] / usr / src / cmd / adb / input.c
CommitLineData
d94e2462
M
1#
2/*
3 *
4 * UNIX debugger
5 *
6 */
7
8#include "defs.h"
9
10INT mkfault;
11CHAR line[LINSIZ];
12INT infile;
13CHAR *lp;
14CHAR lastc EOR;
15INT eof;
16
17/* input routines */
18
19eol(c)
20CHAR c;
21{
22 return(c==EOR ORF c==';');
23}
24
25rdc()
26{ REP readchar();
27 PER lastc==SP ORF lastc==TB
28 DONE
29 return(lastc);
30}
31
32readchar()
33{
34 IF eof
35 THEN lastc=EOF;
36 ELSE IF lp==0
37 THEN lp=line;
38 REP eof = read(infile,lp,1)==0;
39 IF mkfault THEN error(0); FI
40 PER eof==0 ANDF *lp++!=EOR DONE
41 *lp=0; lp=line;
42 FI
43 IF lastc = *lp THEN lp++; FI
44 FI
45 return(lastc);
46}
47
48nextchar()
49{
50 IF eol(rdc())
51 THEN lp--; return(0);
52 ELSE return(lastc);
53 FI
54}
55
56quotchar()
57{
58 IF readchar()=='\\'
59 THEN return(readchar());
60 ELIF lastc=='\''
61 THEN return(0);
62 ELSE return(lastc);
63 FI
64}
65
66getformat(deformat)
67STRING deformat;
68{
69 REG STRING fptr;
70 REG BOOL quote;
71 fptr=deformat; quote=FALSE;
72 WHILE (quote ? readchar()!=EOR : !eol(readchar()))
73 DO IF (*fptr++ = lastc)=='"'
74 THEN quote = ~quote;
75 FI
76 OD
77 lp--;
78 IF fptr!=deformat THEN *fptr++ = '\0'; FI
79}
80
81