xref: /plan9/sys/src/cmd/disk/kfs/misc.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
13e12c5d1SDavid du Colombier #include "all.h"
23e12c5d1SDavid du Colombier 
33e12c5d1SDavid du Colombier extern int cmdfd;
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier Float
63e12c5d1SDavid du Colombier famd(Float a, int b, int c, int d)
73e12c5d1SDavid du Colombier {
83e12c5d1SDavid du Colombier 	ulong x, m;
93e12c5d1SDavid du Colombier 
103e12c5d1SDavid du Colombier 	x = (a + b) * c;
113e12c5d1SDavid du Colombier 	m = x % d;
123e12c5d1SDavid du Colombier 	x /= d;
133e12c5d1SDavid du Colombier 	if(m >= d / 2)
143e12c5d1SDavid du Colombier 		x++;
153e12c5d1SDavid du Colombier 	return x;
163e12c5d1SDavid du Colombier }
173e12c5d1SDavid du Colombier 
183e12c5d1SDavid du Colombier ulong
193e12c5d1SDavid du Colombier fdf(Float a, int d)
203e12c5d1SDavid du Colombier {
213e12c5d1SDavid du Colombier 	ulong x, m;
223e12c5d1SDavid du Colombier 
233e12c5d1SDavid du Colombier 	m = a % d;
243e12c5d1SDavid du Colombier 	x = a / d;
253e12c5d1SDavid du Colombier 	if(m >= d / 2)
263e12c5d1SDavid du Colombier 		x++;
273e12c5d1SDavid du Colombier 	return x;
283e12c5d1SDavid du Colombier }
293e12c5d1SDavid du Colombier 
303e12c5d1SDavid du Colombier long
313e12c5d1SDavid du Colombier belong(char *s)
323e12c5d1SDavid du Colombier {
333e12c5d1SDavid du Colombier 	uchar *x;
343e12c5d1SDavid du Colombier 
353e12c5d1SDavid du Colombier 	x = (uchar *)s;
363e12c5d1SDavid du Colombier 	return (x[0] << 24) + (x[1] << 16) + (x[2] << 8) + x[3];
373e12c5d1SDavid du Colombier }
383e12c5d1SDavid du Colombier 
393e12c5d1SDavid du Colombier void
403e12c5d1SDavid du Colombier panic(char *fmt, ...)
413e12c5d1SDavid du Colombier {
423e12c5d1SDavid du Colombier 	char buf[8192], *s;
43*7dd7cddfSDavid du Colombier 	va_list arg;
44*7dd7cddfSDavid du Colombier 
453e12c5d1SDavid du Colombier 
463e12c5d1SDavid du Colombier 	s = buf;
473e12c5d1SDavid du Colombier 	s += sprint(s, "%s %s %d: ", progname, procname, getpid());
48*7dd7cddfSDavid du Colombier 	va_start(arg, fmt);
49*7dd7cddfSDavid du Colombier 	s = doprint(s, buf + sizeof(buf) / sizeof(*buf), fmt, arg);
50*7dd7cddfSDavid du Colombier 	va_end(arg);
513e12c5d1SDavid du Colombier 	*s++ = '\n';
523e12c5d1SDavid du Colombier 	write(2, buf, s - buf);
533e12c5d1SDavid du Colombier 	exits(buf);
543e12c5d1SDavid du Colombier }
553e12c5d1SDavid du Colombier 
563e12c5d1SDavid du Colombier #define	SIZE	4096
573e12c5d1SDavid du Colombier 
583e12c5d1SDavid du Colombier void
593e12c5d1SDavid du Colombier cprint(char *fmt, ...)
603e12c5d1SDavid du Colombier {
613e12c5d1SDavid du Colombier 	char buf[SIZE], *out;
62*7dd7cddfSDavid du Colombier 	va_list arg;
633e12c5d1SDavid du Colombier 
64*7dd7cddfSDavid du Colombier 	va_start(arg, fmt);
65*7dd7cddfSDavid du Colombier 	out = doprint(buf, buf+SIZE, fmt, arg);
66*7dd7cddfSDavid du Colombier 	va_end(arg);
673e12c5d1SDavid du Colombier 	write(cmdfd, buf, (long)(out-buf));
683e12c5d1SDavid du Colombier }
693e12c5d1SDavid du Colombier 
70*7dd7cddfSDavid du Colombier /*
71*7dd7cddfSDavid du Colombier  * print goes to fd 2 [sic] because fd 1 might be
72*7dd7cddfSDavid du Colombier  * otherwise preoccupied when the -s flag is given to kfs.
73*7dd7cddfSDavid du Colombier  */
743e12c5d1SDavid du Colombier int
753e12c5d1SDavid du Colombier print(char *fmt, ...)
763e12c5d1SDavid du Colombier {
773e12c5d1SDavid du Colombier 	char buf[SIZE], *out;
78*7dd7cddfSDavid du Colombier 	va_list arg;
793e12c5d1SDavid du Colombier 	int n;
803e12c5d1SDavid du Colombier 
81*7dd7cddfSDavid du Colombier 	va_start(arg, fmt);
82*7dd7cddfSDavid du Colombier 	out = doprint(buf, buf+SIZE, fmt, arg);
83*7dd7cddfSDavid du Colombier 	va_end(arg);
84bd389b36SDavid du Colombier 	n = write(2, buf, (long)(out-buf));
853e12c5d1SDavid du Colombier 	return n;
863e12c5d1SDavid du Colombier }
873e12c5d1SDavid du Colombier 
883e12c5d1SDavid du Colombier int
893e12c5d1SDavid du Colombier fprint(int f, char *fmt, ...)
903e12c5d1SDavid du Colombier {
913e12c5d1SDavid du Colombier 	char buf[SIZE], *out;
92*7dd7cddfSDavid du Colombier 	va_list arg;
933e12c5d1SDavid du Colombier 	int n;
943e12c5d1SDavid du Colombier 
95*7dd7cddfSDavid du Colombier 	va_start(arg, fmt);
96*7dd7cddfSDavid du Colombier 	out = doprint(buf, buf+SIZE, fmt, arg);
97*7dd7cddfSDavid du Colombier 	va_end(arg);
983e12c5d1SDavid du Colombier 	n = write(f, buf, (long)(out-buf));
993e12c5d1SDavid du Colombier 	return n;
1003e12c5d1SDavid du Colombier }
1013e12c5d1SDavid du Colombier 
1023e12c5d1SDavid du Colombier int
1033e12c5d1SDavid du Colombier sprint(char *buf, char *fmt, ...)
1043e12c5d1SDavid du Colombier {
1053e12c5d1SDavid du Colombier 	char *out;
106*7dd7cddfSDavid du Colombier 	va_list arg;
107*7dd7cddfSDavid du Colombier 
108*7dd7cddfSDavid du Colombier 	va_start(arg, fmt);
109*7dd7cddfSDavid du Colombier 	out = doprint(buf, buf+SIZE, fmt, arg);
110*7dd7cddfSDavid du Colombier 	va_end(arg);
1113e12c5d1SDavid du Colombier 	return out-buf;
1123e12c5d1SDavid du Colombier }
1133e12c5d1SDavid du Colombier 
1143e12c5d1SDavid du Colombier void
1153e12c5d1SDavid du Colombier perror(char *msg)
1163e12c5d1SDavid du Colombier {
117bd389b36SDavid du Colombier 	fprint(2, "%s", msg);
1183e12c5d1SDavid du Colombier }
119