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
newline()21 newline()
22 { prc(NL);
23 }
24
blank()25 blank()
26 { prc(SP);
27 }
28
prp()29 prp()
30 {
31 IF (flags&prompt)==0 ANDF cmdadr
32 THEN prs(cmdadr); prs(colon);
33 FI
34 }
35
prs(as)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
prc(c)46 VOID prc(c)
47 CHAR c;
48 {
49 IF c
50 THEN write(output,&c,1);
51 FI
52 }
53
prt(t)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
prn(n)69 prn(n)
70 INT n;
71 {
72 itos(n); prs(numbuf);
73 }
74
itos(n)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
stoi(icp)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