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