Annotation of researchv9/jerq/src/lib/j/dprintf.c, revision 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.