#include #include #include #include "compressor.h" void display_help(); int main(int argc, char *argv[]) { if (argc < 5) { // Мінімум 4 аргументи (включаючи алгоритм та файл) display_help(); return -1; } char *action = argv[1]; // -c або -d char *algorithm = argv[2]; // rle або lz77 char *input_filename = argv[3]; // Вхідний файл char *output_filename = argv[4]; // Вихідний файл // Компресія if (strcmp(action, "-c") == 0) { if (strcmp(algorithm, "rle") == 0) { printf("Compressing using RLE...\n"); int result = rle_compress(input_filename, output_filename); if (result >= 0) { printf("Compression successful. Compressed size: %d bytes\n", result); } else { printf("Compression failed with error code %d\n", result); } } else if (strcmp(algorithm, "lz77") == 0) { printf("Compressing using LZ77...\n"); int result = lz77_compress(input_filename, output_filename); if (result >= 0) { printf("Compression successful. Compressed size: %d bytes\n", result); } else { printf("Compression failed with error code %d\n", result); } } else { printf("Unsupported compression algorithm. Use 'rle' or 'lz77'.\n"); return -1; } } // Декомпресія else if (strcmp(action, "-d") == 0) { if (strcmp(algorithm, "rle") == 0) { printf("Decompressing RLE...\n"); int result = rle_decompress(input_filename, output_filename); if (result >= 0) { printf("Decompression successful. Decompressed size: %d bytes\n", result); } else { printf("Decompression failed with error code %d\n", result); } } else if (strcmp(algorithm, "lz77") == 0) { printf("Decompressing LZ77...\n"); int result = lz77_decompress(input_filename, output_filename); if (result >= 0) { printf("Decompression successful. Decompressed size: %d bytes\n", result); } else { printf("Decompression failed with error code %d\n", result); } } else { printf("Unsupported decompression algorithm. Use 'rle' or 'lz77'.\n"); return -1; } } // Показати довідку else if (strcmp(action, "-h") == 0) { display_help(); } else { printf("Invalid arguments\n"); display_help(); return -1; } return 0; } void display_help() { printf("Usage:\n"); printf(" -c algorithm infile outfile : Compress infile using specified algorithm (rle or lz77).\n"); printf(" -d algorithm infile outfile : Decompress infile using specified algorithm (rle or lz77).\n"); printf(" -h : Display this help message.\n"); printf("Examples:\n"); printf(" compression_tool -c rle input.txt output.rle\n"); printf(" compression_tool -c lz77 input.txt output.lz77\n"); printf(" compression_tool -d rle input.rle output.txt\n"); printf(" compression_tool -d lz77 input.lz77 output.txt\n"); }