diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-15 12:15:42 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-15 12:15:42 -0400 |
commit | 42073772e977c536fbce667974bd58e3d60a9def (patch) | |
tree | 894ab0dd456c09f6f172327c293e412853fbe03f | |
parent | 6bc53fabf9186a4ec6433154719ff9c3116c269f (diff) |
Refactor xor_compress to separate input file handling from data compression
-rw-r--r-- | tools/xor_compress.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/tools/xor_compress.c b/tools/xor_compress.c index 49f23ea..238ee63 100644 --- a/tools/xor_compress.c +++ b/tools/xor_compress.c @@ -64,15 +64,7 @@ failure: return buffer; } -int compress_files(char *filenames[], int num_files) { - int err = 0; - size_t n = 0; - unsigned char *data = read_files(filenames, num_files, &n, &err); - if (err > 0) { - if (data) free(data); - return err; - } - +void compress_data(unsigned char *data, size_t n) { unsigned char v = 0x00; for (size_t i = 0; i < n;) { unsigned char byte = data[i++]; @@ -99,10 +91,7 @@ int compress_files(char *filenames[], int num_files) { fwrite(buffer, 1, size, stdout); } } - fflush(stdout); - free(data); - return 0; } int main(int argc, char *argv[]) { @@ -112,5 +101,16 @@ int main(int argc, char *argv[]) { } argv++; argc--; - return compress_files(argv, argc); + + int err = 0; + size_t data_size = 0; + unsigned char *data = read_files(argv, argc, &data_size, &err); + if (err > 0) { + if (data) free(data); + return err; + } + + compress_data(data, data_size); + free(data); + return 0; } |