// tuzc: compress stdin with tinyuz (4 KB dict) to stdout; verifies by round-trip. #include #include #include #include #include "tinyuz/decompress/tuz_dec.h" extern "C" size_t tuz_compress_mem(const unsigned char*, size_t, unsigned char*, size_t, size_t); extern "C" size_t tuz_max_compressed_size(size_t); int main() { _setmode(_fileno(stdin), _O_BINARY); _setmode(_fileno(stdout), _O_BINARY); std::vector in; int c; while ((c = getchar()) != EOF) in.push_back((unsigned char)c); if (in.empty()) return 2; std::vector out(tuz_max_compressed_size(in.size())); size_t n = tuz_compress_mem(in.data(), in.size(), out.data(), out.size(), 4096); if (n == 0) return 3; std::vector back(in.size()); tuz_size_t back_size = (tuz_size_t)back.size(); if (tuz_decompress_mem(out.data(), n, back.data(), &back_size) != tuz_STREAM_END || back_size != in.size() || back != in) return 4; fwrite(out.data(), 1, n, stdout); return 0; }