diff options
Diffstat (limited to 'tools/xor_compress.c')
-rw-r--r-- | tools/xor_compress.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tools/xor_compress.c b/tools/xor_compress.c index 0e1c5e2..555274a 100644 --- a/tools/xor_compress.c +++ b/tools/xor_compress.c @@ -55,11 +55,12 @@ failure: return buffer; } -int write_compressed(const char *filename, unsigned char *data, size_t n, bool verbose) { +int write_compressed(const char *filename, unsigned char *data, size_t n, int *err) { FILE *f = fopen(filename, "wb"); if (!f) { fprintf(stderr, PROGRAM_NAME ": %s: %s\n", filename, strerror(errno)); - return errno; + *err = errno; + return 0; } int runs = 0; @@ -90,11 +91,10 @@ int write_compressed(const char *filename, unsigned char *data, size_t n, bool v } } - if (verbose) printf(PROGRAM_NAME ": %s: ld bc, $%x\n", filename, runs); - fflush(f); fclose(f); - return 0; + *err = 0; + return runs; } int main(int argc, char *argv[]) { @@ -111,10 +111,17 @@ int main(int argc, char *argv[]) { argv++; argc -= 2; + const char *out_filename = argv[argc]; + int err = 0; size_t data_size = 0; unsigned char *data = read_files(argv, argc, &data_size, &err); - if (!err) err = write_compressed(argv[argc], data, data_size, verbose); + if (!err) { + int runs = write_compressed(out_filename, data, data_size, &err); + if (!err && verbose) { + printf(PROGRAM_NAME ": %s: ld bc, $%x\n", out_filename, runs); + } + } free(data); return err; } |