ref: 5ac5ac2d64c4aeed30d6f9a23eaa8dda7d295e47
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); }