|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)print.c 4.2 8/11/83"; ! 3: #endif ! 4: ! 5: # ! 6: /* ! 7: * UNIX shell ! 8: * ! 9: * S. R. Bourne ! 10: * Bell Telephone Laboratories ! 11: * ! 12: */ ! 13: ! 14: #include "defs.h" ! 15: ! 16: CHAR numbuf[6]; ! 17: ! 18: ! 19: /* printing and io conversion */ ! 20: ! 21: newline() ! 22: { prc(NL); ! 23: } ! 24: ! 25: blank() ! 26: { prc(SP); ! 27: } ! 28: ! 29: prp() ! 30: { ! 31: IF (flags&prompt)==0 ANDF cmdadr ! 32: THEN prs(cmdadr); prs(colon); ! 33: FI ! 34: } ! 35: ! 36: VOID prs(as) ! 37: STRING as; ! 38: { ! 39: REG STRING s; ! 40: ! 41: IF s=as ! 42: THEN write(output,s,length(s)-1); ! 43: FI ! 44: } ! 45: ! 46: VOID prc(c) ! 47: CHAR c; ! 48: { ! 49: IF c ! 50: THEN write(output,&c,1); ! 51: FI ! 52: } ! 53: ! 54: prt(t) ! 55: L_INT t; ! 56: { ! 57: REG INT hr, min, sec; ! 58: ! 59: t += 30; t /= 60; ! 60: sec=t%60; t /= 60; ! 61: min=t%60; ! 62: IF hr=t/60 ! 63: THEN prn(hr); prc('h'); ! 64: FI ! 65: prn(min); prc('m'); ! 66: prn(sec); prc('s'); ! 67: } ! 68: ! 69: prn(n) ! 70: INT n; ! 71: { ! 72: itos(n); prs(numbuf); ! 73: } ! 74: ! 75: itos(n) ! 76: { ! 77: REG char *abuf; REG POS a, i; INT pr, d; ! 78: abuf=numbuf; pr=FALSE; a=n; ! 79: FOR i=10000; i!=1; i/=10 ! 80: DO IF (pr |= (d=a/i)) THEN *abuf++=d+'0' FI ! 81: a %= i; ! 82: OD ! 83: *abuf++=a+'0'; ! 84: *abuf++=0; ! 85: } ! 86: ! 87: stoi(icp) ! 88: STRING icp; ! 89: { ! 90: REG CHAR *cp = icp; ! 91: REG INT r = 0; ! 92: REG CHAR c; ! 93: ! 94: WHILE (c = *cp, digit(c)) ANDF c ANDF r>=0 ! 95: DO r = r*10 + c - '0'; cp++ OD ! 96: IF r<0 ORF cp==icp ! 97: THEN failed(icp,badnum); ! 98: ELSE return(r); ! 99: FI ! 100: } ! 101:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.