|
|
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.