From 42073772e977c536fbce667974bd58e3d60a9def Mon Sep 17 00:00:00 2001 From: Rangi Date: Tue, 15 Sep 2020 12:15:42 -0400 Subject: Refactor xor_compress to separate input file handling from data compression --- tools/xor_compress.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'tools/xor_compress.c') 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; } -- cgit v1.2.3