|
|
1.1 ! root 1: # ! 2: /* ! 3: * ! 4: * UNIX debugger ! 5: * ! 6: */ ! 7: ! 8: #include "defs.h" ! 9: SCCSID(@(#)input.c 2.2); ! 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=EOF; ! 37: ELSE IF lp==0 ! 38: THEN lp=line; ! 39: #ifdef EDDT ! 40: getcon(lp); eof=0; while (*lp++!=EOR); ! 41: #else ! 42: REP eof = read(infile,lp,1)==0; ! 43: IF mkfault THEN error(0); FI ! 44: PER eof==0 ANDF *lp++!=EOR DONE ! 45: #endif ! 46: *lp=0; lp=line; ! 47: FI ! 48: IF lastc = peekc THEN peekc=0; ! 49: ELIF lastc = *lp THEN lp++; ! 50: FI ! 51: FI ! 52: return(lastc); ! 53: } ! 54: ! 55: nextchar() ! 56: { ! 57: IF eol(rdc()) ! 58: THEN lp--; return(0); ! 59: ELSE return(lastc); ! 60: FI ! 61: } ! 62: ! 63: quotchar() ! 64: { ! 65: IF readchar()=='\\' ! 66: THEN return(readchar()); ! 67: ELIF lastc=='\'' ! 68: THEN return(0); ! 69: ELSE return(lastc); ! 70: FI ! 71: } ! 72: ! 73: getformat(deformat) ! 74: STRING deformat; ! 75: { ! 76: REG STRING fptr; ! 77: REG BOOL quote; ! 78: fptr=deformat; quote=FALSE; ! 79: WHILE (quote ? readchar()!=EOR : !eol(readchar())) ! 80: DO IF (*fptr++ = lastc)=='"' ! 81: THEN quote = ~quote; ! 82: FI ! 83: OD ! 84: lp--; ! 85: IF fptr!=deformat THEN *fptr++ = '\0'; FI ! 86: } ! 87: ! 88: #ifdef EDDT ! 89: getcon(cs) register char *cs; { ! 90: register char *p=cs; ! 91: for(;;) { ! 92: putchar(*p++=getcnsl()); ! 93: if (p[-1]=='\r') {putchar(p[-1]='\n'); *p++='\0'; return;} ! 94: if (p[-1]=='\\') {p[-1]=getcnsl(); continue;} ! 95: if (p[-1]=='#') {p -= 2; continue;} ! 96: if (p[-1]=='@') {putchar('\r'); putchar('\n'); p=cs; continue;} ! 97: }} ! 98: ! 99: getcnsl() { ! 100: # define RXCS 32 /* receiver control/staus */ ! 101: # define RXDB 33 /* receiver data */ ! 102: # define RXCS_DONE 0x80 /* receiver done */ ! 103: while ((mfpr(RXCS) & RXCS_DONE)==0); ! 104: return (mfpr(RXDB) & 0177); ! 105: } ! 106: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.