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