#include "platform.h"#include "brieflz.h" intmain(int argc, char **argv){ unsigned long sz; int n, level; char *e; level = 9; if(argc == 2 && argv[1][0] == '-' && isdigit((unsigned)argv[1][1])){ level = (int)strtol(argv[1]+1, &e, 10); if(*e != 0 || level < 0 || level > 10) abort(); argc--; } if(argc != 1) abort(); u8int *in = nil; unsigned long max = 32768; for(sz = 0;; sz += n){ if(max < sz+65536){ max *= 2; u8int *t = realloc(in, max); if(t == nil) abort(); in = t; } if((n = (int)read(0, in+sz, max-sz)) < 0 || (unsigned long)n > max-sz) abort(); if(n == 0) break; } u8int *out = malloc(1+4+blz_max_packed_size(sz)); if(out == nil) abort(); u8int *w = malloc(blz_workmem_size_level(sz, level)); if(w == nil) abort(); unsigned long osz = blz_pack_level(in, out+1+4, sz, w, level); 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(); free(w); free(out); int code = 0; USED(code); sys_exit(nil, code);}
#include "platform.h"
#include "brieflz.h"
int
main(int argc, char **argv)
{
unsigned long sz;
int n, level;
char *e;
level = 9;
if(argc == 2 && argv[1][0] == '-' && isdigit((unsigned)argv[1][1])){
level = (int)strtol(argv[1]+1, &e, 10);
if(*e != 0 || level < 0 || level > 10)
abort();
argc--;
}
if(argc != 1)
abort();
u8int *in = nil;
unsigned long max = 32768;
for(sz = 0;; sz += n){
if(max < sz+65536){
max *= 2;
u8int *t = realloc(in, max);
if(t == nil)
abort();
in = t;
}
if((n = (int)read(0, in+sz, max-sz)) < 0 || (unsigned long)n > max-sz)
abort();
if(n == 0)
break;
}
u8int *out = malloc(1+4+blz_max_packed_size(sz));
if(out == nil)
abort();
u8int *w = malloc(blz_workmem_size_level(sz, level));
if(w == nil)
abort();
unsigned long osz = blz_pack_level(in, out+1+4, sz, w, level);
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();
free(w);
free(out);
int code = 0;
USED(code);
sys_exit(nil, code);
}