11 if(Bread(b, p, 4) != 4)
12 sysfatal("short read");
13 return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
17 * memmove but make sure overlap works properly.
20 copy(uchar *dst, uchar *src, int n)
33 int i, j, length, n, m, o, sum;
42 switch(rfork(RFPROC|RFFDG|RFNOTEG|RFMEM)){
54 Binit(&bin, in, OREAD);
57 if(Bread(b, buf, 4) != 4)
58 sysfatal("short read");
60 if(memcmp(buf, "BLZ\n", 4) != 0)
61 sysfatal("bad header");
64 data = malloc(length);
66 sysfatal("out of memory");
74 blk = realloc(blk, (mblk+1)*sizeof(blk[0]));
76 sysfatal("out of memory");
83 blk[nblk++] = Bgetint(b);
87 sysfatal("bad compressed data %d %d", sum, length);
95 if((m=Bread(b, data+i, n)) != n)
96 sysfatal("short read %d %d", n, m);
99 copy(data+i, data+o, n);
103 write(out, data, length);