Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include <diskfs.h>
6 void
7 blockdump(Block *bb, char *desc)
8 {
9 uchar *p, *ep;
10 int i;
11 Biobuf b;
13 Binit(&b, 2, OWRITE);
15 Bprint(&b, "%s\n", desc);
17 p = bb->data;
18 ep = bb->data + bb->len;
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 }
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 }