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