#include <u.h> | |
#include <libc.h> | |
#include <bio.h> | |
#include <diskfs.h> | |
void | |
blockdump(Block *bb, char *desc) | |
{ | |
uchar *p, *ep; | |
int i; | |
Biobuf b; | |
Binit(&b, 2, OWRITE); | |
Bprint(&b, "%s\n", desc); | |
p = bb->data; | |
ep = bb->data + bb->len; | |
while(p < ep){ | |
for(i=0; i<16; i++){ | |
if(p+i < ep) | |
Bprint(&b, "%.2ux ", p[i]); | |
else | |
Bprint(&b, " "); | |
if(i==7) | |
Bprint(&b, "- "); | |
} | |
Bprint(&b, " "); | |
for(i=0; i<16; i++){ | |
if(p+i < ep) | |
Bprint(&b, "%c", p[i] >= 0x20 && p[i] <= 0x7F ? p[i] : '.'); | |
else | |
Bprint(&b, " "); | |
} | |
p += 16; | |
Bprint(&b, "\n"); | |
} | |
Bterm(&b); | |
} | |
void | |
blockput(Block *b) | |
{ | |
if(b == nil) | |
return; | |
if(!b->_close){ | |
fprint(2, "no blockPut\n"); | |
abort(); | |
} | |
(*b->_close)(b); | |
} |