8 fprint(2, "usage: unbflz [file]\n");
17 if(Bread(b, p, 4) != 4)
18 sysfatal("short read");
19 return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
23 * memmove but make sure overlap works properly.
26 copy(uchar *dst, uchar *src, int n)
33 main(int argc, char **argv)
41 int i, j, length, m, n, o;
52 Binit(&bin, 0, OREAD);
56 if((b = Bopen(argv[0], OREAD)) == nil)
57 sysfatal("open %s: %r", argv[0]);
61 if(Bread(b, buf, 4) != 4)
62 sysfatal("short read");
64 if(memcmp(buf, "BLZ\n", 4) != 0)
65 sysfatal("bad header");
68 data = malloc(length);
70 sysfatal("out of memory");
78 blk = realloc(blk, (mblk+1)*sizeof(blk[0]));
80 sysfatal("out of memory");
87 blk[nblk++] = Bgetint(b);
91 sysfatal("bad compressed data %d %d", sum, length);
99 if((m=Bread(b, data+i, n)) != n)
100 sysfatal("short read %d %d", n, m);
103 copy(data+i, data+o, n);
107 write(1, data, length);