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*26418Ssameol(c) 23*26418Ssam CHAR c; 24*26418Ssam { 25*26418Ssam return(c==EOR ORF c==';'); 26*26418Ssam } 27*26418Ssam rdc()28*26418Ssamrdc() 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*26418Ssamreadchar(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*26418Ssamnextchar() 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*26418Ssamquotchar() 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*26418Ssamgetformat(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