Annotation of researchv9/jerq/src/lib/j/dprintf.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.