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