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