xref: /original-bsd/old/sh/print.c (revision 3b6250d9)
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