|
|
1.1 root 1: #include <fio.h>
2:
3: #define WIDTH 32
4:
5: scsiodump(p, n)
6: register unsigned char *p;
7: {
8: register i, nd, l;
9: unsigned char buf[WIDTH];
10: int didstar;
11: unsigned char *s;
12:
13: for(nd = 0; n > 0; n -= l, nd += l){
14: l = min(WIDTH, n);
15: if(nd && (l == WIDTH) && (memcmp(buf, p, l) == 0)){
16: p += WIDTH;
17: if(didstar++ == 0)
18: Fprint(1, "*\n");
19: continue;
20: }
21: memcpy(buf, p, l);
22: didstar = 0;
23: Fprint(1, "%5.5d", nd);
24: s = p;
25: for(i = 0; i < l; i++){
26: if((i%4) == 0) Fputc(1, ' ');
27: Fprint(1, "%2.2ux", *p++);
28: }
29: Fputc(1, '\n');
30: Fprint(1, " ");
31: for(i = 0; i < l; i++){
32: if((i%4) == 0) Fputc(1, ' ');
33: if((*s >= ' ') && (*s < 0177))
34: Fprint(1, " %c", *s++);
35: else switch(*s++)
36: {
37: case '\n': Fprint(1, "\\n"); break;
38: case '\t': Fprint(1, "\\t"); break;
39: default: Fprint(1, ".."); break;
40: }
41: }
42: Fputc(1, '\n');
43: }
44: Fprint(1, "%5.5d\n", nd);
45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.