22inline bool check(std::string
source, std::string decompressed) {
23 std::unique_ptr<std::uint8_t[]> sBuf(
new std::uint8_t[1024]);
24 std::unique_ptr<std::uint8_t[]> dBuf(
new std::uint8_t[1024]);
26 auto sFd = std::fopen(
source.c_str(),
"rb");
27 auto dFd = std::fopen(decompressed.c_str(),
"rb");
36 sRead = std::fread(sBuf.get(), 1, 1024, sFd);
37 dRead = std::fread(dBuf.get(), 1, 1024, dFd);
38 if (std::ferror(sFd) || std::ferror(dFd)) {
45 for (
size_t i = 0;
i < sRead; ++
i) {
46 if (sBuf.get()[
i] != dBuf.get()[
i]) {
50 }
while (sRead == 1024);
51 if (!std::feof(sFd) || !std::feof(dFd)) {
58 if (
options.inputFiles.size() != 1) {
62 std::string compressedFile = std::tmpnam(
nullptr);
63 std::string decompressedFile = std::tmpnam(
nullptr);
65 std::remove(compressedFile.c_str());
66 std::remove(decompressedFile.c_str());
70 options.outputFile = compressedFile;
78 options.inputFiles.front() = compressedFile;
79 options.outputFile = decompressedFile;
ScopeGuard< Function > makeScopeGuard(Function &&function)
Creates a scope guard from function.
Definition ScopeGuard.h:47