block.c (733B)
1 #include <u.h> 2 #include <libc.h> 3 #include <bio.h> 4 #include <diskfs.h> 5 6 void 7 blockdump(Block *bb, char *desc) 8 { 9 uchar *p, *ep; 10 int i; 11 Biobuf b; 12 13 Binit(&b, 2, OWRITE); 14 15 Bprint(&b, "%s\n", desc); 16 17 p = bb->data; 18 ep = bb->data + bb->len; 19 20 while(p < ep){ 21 for(i=0; i<16; i++){ 22 if(p+i < ep) 23 Bprint(&b, "%.2ux ", p[i]); 24 else 25 Bprint(&b, " "); 26 if(i==7) 27 Bprint(&b, "- "); 28 } 29 Bprint(&b, " "); 30 for(i=0; i<16; i++){ 31 if(p+i < ep) 32 Bprint(&b, "%c", p[i] >= 0x20 && p[i] <= 0x7F ? p[i] : '.'); 33 else 34 Bprint(&b, " "); 35 } 36 p += 16; 37 Bprint(&b, "\n"); 38 } 39 Bterm(&b); 40 } 41 42 void 43 blockput(Block *b) 44 { 45 if(b == nil) 46 return; 47 if(!b->_close){ 48 fprint(2, "no blockPut\n"); 49 abort(); 50 } 51 (*b->_close)(b); 52 }