From 3ccf4cc72410d947282fd7661dafe18b0387a8e5 Mon Sep 17 00:00:00 2001 From: Bohdan Kapliuk Date: Sun, 12 Jan 2025 16:29:37 +0200 Subject: [PATCH] sk1 --- sk1/compressor.c | 10 ++++++---- sk1/main.c | 8 ++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/sk1/compressor.c b/sk1/compressor.c index ecf4379..17d1ac9 100644 --- a/sk1/compressor.c +++ b/sk1/compressor.c @@ -88,7 +88,7 @@ unsigned char* decompress_1_buffer(const unsigned char* data, size_t size, size_ int decompress_1(const char* input_file_name, const char* output_file_name) { size_t size; unsigned char* data; - if (read_file(input_file_name, &data, &size) != 0) return -1; + if (read_file(output_file_name, &data, &size) != 0) return -1; // Змінили місцями файли size_t out_size; unsigned char* decompressed = decompress_1_buffer(data, size, &out_size); @@ -96,9 +96,10 @@ int decompress_1(const char* input_file_name, const char* output_file_name) { free(data); return -1; } - int result = write_file(output_file_name, decompressed, out_size); + int result = write_file(input_file_name, decompressed, out_size); // Змінили місцями файли free(data); free(decompressed); + return result == 0 ? (int)out_size : -1; } @@ -173,11 +174,11 @@ int compress_2(const char* input_file_name, const char* output_file_name) { int decompress_2(const char* input_file_name, const char* output_file_name) { unsigned char* data; size_t size; - if (read_file(input_file_name, &data, &size) != 0) { + if (read_file(output_file_name, &data, &size) != 0) { // Змінили місцями файли return -1; } - FILE* output = fopen(output_file_name, "w"); + FILE* output = fopen(input_file_name, "w"); // Змінили місцями файли if (!output) { free(data); return -1; @@ -226,6 +227,7 @@ int decompress_2(const char* input_file_name, const char* output_file_name) { dict_size++; } } + fclose(output); free(data); for (size_t i = 0; i < dict_size; i++) { diff --git a/sk1/main.c b/sk1/main.c index 8e8888f..5dde7c3 100644 --- a/sk1/main.c +++ b/sk1/main.c @@ -36,22 +36,22 @@ int main(int argc, char* argv[]) { if (strcmp(argv[1], "-c") == 0) { result = compress_1(input_file, output_file); if (result < 0) { - return 0; + return 1; } } else if (strcmp(argv[1], "-d") == 0) { result = decompress_1(input_file, output_file); if (result < 0) { - return 0; + return 1; } } else if (strcmp(argv[1], "-c2") == 0) { result = compress_2(input_file, output_file); if (result < 0) { - return 0; + return 1; } } else if (strcmp(argv[1], "-d2") == 0) { result = decompress_2(input_file, output_file); if (result < 0) { - return 0; + return 1; } } else { fprintf(stderr, "Chyba: Neznamy argument. Použite -h pre zobrazenie pomoci.\n");