xref: /csrg-svn/old/sh/print.c (revision 6701)
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