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