xref: /plan9/sys/src/cmd/disk/kfs/misc.c (revision 2bef681aed9a53ac1dc6db418047b00f7a5ce209)
13e12c5d1SDavid du Colombier #include "all.h"
23e12c5d1SDavid du Colombier 
33e12c5d1SDavid du Colombier extern int cmdfd;
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier Float
famd(Float a,int b,int c,int d)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
fdf(Float a,int d)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
belong(char * s)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
panic(char * fmt,...)403e12c5d1SDavid du Colombier panic(char *fmt, ...)
413e12c5d1SDavid du Colombier {
423e12c5d1SDavid du Colombier 	char buf[8192], *s;
437dd7cddfSDavid du Colombier 	va_list arg;
447dd7cddfSDavid du Colombier 
453e12c5d1SDavid du Colombier 
463e12c5d1SDavid du Colombier 	s = buf;
473e12c5d1SDavid du Colombier 	s += sprint(s, "%s %s %d: ", progname, procname, getpid());
487dd7cddfSDavid du Colombier 	va_start(arg, fmt);
49*9a747e4fSDavid du Colombier 	s = vseprint(s, buf + sizeof(buf) / sizeof(*buf), fmt, arg);
507dd7cddfSDavid du Colombier 	va_end(arg);
513e12c5d1SDavid du Colombier 	*s++ = '\n';
523e12c5d1SDavid du Colombier 	write(2, buf, s - buf);
53*9a747e4fSDavid du Colombier abort();
543e12c5d1SDavid du Colombier 	exits(buf);
553e12c5d1SDavid du Colombier }
563e12c5d1SDavid du Colombier 
573e12c5d1SDavid du Colombier #define	SIZE	4096
583e12c5d1SDavid du Colombier 
593e12c5d1SDavid du Colombier void
cprint(char * fmt,...)603e12c5d1SDavid du Colombier cprint(char *fmt, ...)
613e12c5d1SDavid du Colombier {
623e12c5d1SDavid du Colombier 	char buf[SIZE], *out;
637dd7cddfSDavid du Colombier 	va_list arg;
643e12c5d1SDavid du Colombier 
657dd7cddfSDavid du Colombier 	va_start(arg, fmt);
66*9a747e4fSDavid du Colombier 	out = vseprint(buf, buf+SIZE, fmt, arg);
677dd7cddfSDavid du Colombier 	va_end(arg);
683e12c5d1SDavid du Colombier 	write(cmdfd, buf, (long)(out-buf));
693e12c5d1SDavid du Colombier }
703e12c5d1SDavid du Colombier 
717dd7cddfSDavid du Colombier /*
727dd7cddfSDavid du Colombier  * print goes to fd 2 [sic] because fd 1 might be
737dd7cddfSDavid du Colombier  * otherwise preoccupied when the -s flag is given to kfs.
747dd7cddfSDavid du Colombier  */
753e12c5d1SDavid du Colombier int
print(char * fmt,...)763e12c5d1SDavid du Colombier print(char *fmt, ...)
773e12c5d1SDavid du Colombier {
787dd7cddfSDavid du Colombier 	va_list arg;
793e12c5d1SDavid du Colombier 	int n;
803e12c5d1SDavid du Colombier 
817dd7cddfSDavid du Colombier 	va_start(arg, fmt);
82*9a747e4fSDavid du Colombier 	n = vfprint(2, fmt, arg);
837dd7cddfSDavid du Colombier 	va_end(arg);
843e12c5d1SDavid du Colombier 	return n;
853e12c5d1SDavid du Colombier }
863e12c5d1SDavid du Colombier 
87