#include "encode.h"
#include "decode.h"
#include <string.h>
#include <libgen.h>
#include <stdlib.h>
#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);
}