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