#include "encode.h" #include "decode.h" #include #include #include #include "lzw.h" int main(int argc, char *argv[]) { static char bin[64], bout[64]; setvbuf(stdin, bin, _IOFBF, 64); setvbuf(stdout, bout, _IOFBF, 64); char *exec_name = basename(argv[0]); if (strcmp(exec_name, "encode") == 0) { int maxBits = DEFAULT_BITS; int pruning = 0; for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "-m") == 0) { maxBits = atoi(argv[i + 1]); if (maxBits < MIN_BITS || maxBits > MAX_BITS) { fprintf(stderr, "encode: maxBits must be between 9 and 20 (received '%s')\n", argv[i + 1]); exit(1); } } else if (strcmp(argv[i], "-p") == 0) { pruning = 1; } } encode(pruning, maxBits); } else if (strcmp(exec_name, "decode") == 0) { if (argc > 1) { fprintf(stderr, "decode: invalid option '%s'\n", argv[1]); exit(1); } decode(); } else { fprintf(stderr, "Usage: %s [-m MAXBITS] [-p] < input > output\n", argv[0]); fprintf(stderr, " %s < input > output\n", argv[0]); exit(1); } exit(0); }