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