1 #ifndef lint 2 static char sccsid[] = "@(#)print.c 4.2 08/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 102