From f4cd7abdd38aa3d14dcce98cb92dc1054fe97503 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 9 Mar 2021 12:58:34 +0200 Subject: Add support for compressing/decompressing fdstreams with LZ4 Importing LZ4 code from version 1.9.3. --- tests/lz4/driver.cxx | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/lz4/driver.cxx (limited to 'tests/lz4/driver.cxx') diff --git a/tests/lz4/driver.cxx b/tests/lz4/driver.cxx new file mode 100644 index 0000000..e3da5e6 --- /dev/null +++ b/tests/lz4/driver.cxx @@ -0,0 +1,47 @@ +// file : tests/lz4/driver.cxx -*- C++ -*- +// license : MIT; see accompanying LICENSE file + +#include +#include + +#include +#include +#include // entry_stat, path_entry() + +using namespace std; +using namespace butl; + +// Usage: argv[0] [-c|-d] +// +int +main (int argc, const char* argv[]) +try +{ + assert (argc == 4); + + ifdstream ifs (argv[2], fdopen_mode::binary, ifdstream::badbit); + ofdstream ofs (argv[3], fdopen_mode::binary); + + if (argv[1][1] == 'c') + { + // @@ TODO: would be nice to get it from fd. + // + entry_stat st (path_entry (argv[2], true /* follow_symlinks */).second); + + lz4::compress (ofs, ifs, + 1 /* compression_level */, + 4 /* block_size_id (64KB) */, + st.size); + } + else + { + lz4::decompress (ofs, ifs); + } + + ofs.close (); +} +catch (const std::exception& e) +{ + cerr << e.what () << endl; + return 1; +} -- cgit v1.1