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