-void
-bin_dump( char *s, char *cp, int count )
-{
- char *buffer;
- char c;
- int w;
- int i;
- long o;
-
- o = 0;
- buffer = cp;
- while ( count > 0 ) {
- c = 16;
- if (c > count) {
- c = count;
- }
- sprintf( s, "%05lx:", o);
- s += strlen(s);
- w = 0;
- for (i = 0; i < c/2; ++i) {
- w += 5;
- sprintf( s, " %04x", ((unsigned short *)buffer)[i]);
- s += strlen(s);
- }
- if (c & 1) {
- w += 3;
- sprintf( s, " %02x", buffer[c-1]);
- s += strlen(s);
- }
- while (w < 41) {
- ++w;
- sprintf( s, "%c", ' ');
- s += strlen(s);
- }
- for (i = 0; i < c; ++i) {
- if (isprint(buffer[i])) {
- sprintf( s, "%c", buffer[i]);
- } else {
- sprintf( s, ".");
- }
- s += strlen(s);
- }
- sprintf( s, "\n" );
- s += strlen(s);
- o += c;
- buffer += c;
- count -= c;
- }
- sprintf( s, "%05lx:\0", o );
-}
-