ref: 00c2c84deabbed8dfe7ed1c5e25af4dd093d3755
dir: /tools/lzpack.c/
#include "platform.h"
#include "brieflz.h"
static u8int in[256*1024];
int
main(int argc, char **argv)
{
unsigned long sz;
int n;
USED(argc); USED(argv);
for(sz = 0;; sz += n){
if((n = read(0, in+sz, sizeof(in)-sz)) < 0)
abort();
if(n == 0)
break;
}
if(sz == sizeof(in))
abort();
u8int *out = MEM_ALLOC(1+4+blz_max_packed_size(sz));
if(out == nil)
abort();
u8int *w = MEM_ALLOC(blz_workmem_size_level(sz, 10));
if(w == nil)
abort();
unsigned long osz = blz_pack_level(in, out+1+4, sz, w, 10);
if(osz == BLZ_ERROR)
abort();
out[0] = 0;
out[1] = sz >> 0;
out[2] = sz >> 8;
out[3] = sz >> 16;
out[4] = sz >> 24;
osz += 1+4;
if((unsigned long)write(1, out, osz) != osz)
abort();
MEM_FREE(w);
MEM_FREE(out);
exit(0);
}