Annotation of coherent/a/usr/src/misc/xdump.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Vertical hex dump subroutine
                      3:  * dumps 64 bytes per line
                      4:  */
                      5: 
                      6: static
                      7: clean(c)
                      8: register char c;
                      9: {
                     10:        return ((c >= ' ' && c <= '~' ) ? c : '.');
                     11: }
                     12: 
                     13: static unsigned int linepos = 0; /* how many non sep chars output so far */
                     14: /*
                     15:  * Put char and separators.
                     16:  */
                     17: static void
                     18: outc(c)
                     19: char c;
                     20: {
                     21:        if(!(linepos & 3))
                     22:                putchar(linepos ? ' ' : '\n');
                     23:        putchar(c);
                     24:        linepos++;
                     25: }
                     26: 
                     27: static
                     28: hex(c)
                     29: register char c;
                     30: {
                     31:        return(c + ((c <= 9) ? '0' : 'A' - 10));
                     32: }
                     33: 
                     34: xdump(p, length)
                     35: register unsigned char *p;
                     36: {
                     37:        register int tlength;
                     38:        register unsigned char *l;
                     39: 
                     40:        for(;(tlength = (length > 64) ? 64 : length) > 0; length -= 64) {
                     41:                for(linepos = 0, l = p; linepos < tlength; )
                     42:                        outc(clean(*p++));
                     43: 
                     44:                for(linepos = 0, p = l; linepos < tlength; )
                     45:                        outc(hex(((*p++) >> 4) & 15));
                     46: 
                     47:                for(linepos = 0, p = l; linepos < tlength; )
                     48:                        outc(hex((*p++) & 15));
                     49:        }
                     50:        putchar('\n');
                     51: }

unix.superglobalmegacorp.com

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