Commit | Line | Data |
---|---|---|
f6227721 SL |
1 | #ifndef lint |
2 | static char sccsid[] = "@(#)print.c 4.2 %G%"; | |
3 | #endif | |
e5e8435d KM |
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 |