|
|
1.1 root 1: /*
2: * Scaled down version of C Library sprintf.
3: * Only %s %u %d (==%u) %o %x %D are recognized.
4: */
5: dprintf(buf, fmt, x1)
6: register FILE *f;
7: register char *fmt;
8: unsigned *x1;
9: {
10: register c;
11: register unsigned int *adx;
12: register long l;
13: char *s;
14:
15: adx = x1;
16: for(;;){
17: while((c = *fmt++) != '%') {
18: if(c == '\0')
19: return(f->cp);
20: putc(c,f);
21: }
22: c = *fmt++;
23: if(c=='o' || c=='u' || c=='x')
24: sprintn((long)*adx, c=='o'? 8: (c=='x'? 16:10), f);
25: else if(c=='d'){ /* Signed, please */
26: l= *(int *)adx;
27: if(l<0){
28: putc('-',f);
29: l= -l;
30: }
31: sprintn(l, 10, f);
32: }else if(c == 's') {
33: s = *(char **)adx;
34: while(c = *s++)
35: putc(c,f);
36: adx += (sizeof (char *)/sizeof(int)) -1;
37: } else if (c == 'D') {
38: sprintn(*(long *)adx, 10, f);
39: adx += (sizeof(long) / sizeof(int)) - 1;
40: } else if (c == 'X') {
41: sprintn(*(long *)adx, 16, f);
42: adx += (sizeof(long) / sizeof(int)) - 1;
43: } else if (c == 'c') {
44: putc(*adx,f);
45: }
46: adx++;
47: }
48: }
49:
50: /*
51: * Print an unsigned integer in base b.
52: */
53: sprintn(n, b, f)
54: unsigned long n;
55: FILE *f;
56: {
57: register long a;
58:
59: if(a = n/b)
60: sprintn(a, b, f);
61: putc("0123456789ABCDEF"[(int)(n%b)],f);
62: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.