// main.c #include #include #include #include "compressor.h" // Підключаємо тільки заголовок void display_help(); int main(int argc, char *argv[]) { // Перевірка кількості аргументів if (argc < 4) { display_help(); return -1; } // Імена вхідного та вихідного файлів char *input_filename = argv[2]; char *output_filename = argv[3]; char *algorithm = argc >= 5 ? argv[4] : "rle"; // Алгоритм, за замовчуванням rle // Обробка компресії if (argc >= 4 && strcmp(argv[1], "-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 (argc >= 4 && strcmp(argv[1], "-d") == 0) { if (strstr(input_filename, ".rle") != NULL) { 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 (strstr(input_filename, ".lz77") != NULL) { 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 format.\n"); return -1; } } // Виведення довідки else if (argc == 3 && strcmp(argv[1], "-h") == 0) { display_help(); } else { printf("Invalid arguments\n"); display_help(); return -1; } return 0; } // Функція для виведення довідки void display_help() { printf("Usage:\n"); printf(" -c infile outfile [algorithm] : Compress infile to outfile. Algorithm can be 'rle' or 'lz77'. Default is 'rle'.\n"); printf(" -d compressed outfile : Decompress compressed to outfile.\n"); printf(" -h : Display this help message.\n"); printf("Examples:\n"); printf(" compression_tool -c input.txt output.rle rle\n"); printf(" compression_tool -c input.txt output.lz77 lz77\n"); printf(" compression_tool -d output.rle decompressed.txt\n"); }