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