#include #include #include "lzss.h" #include "fileutils.h" #include "generic.h" int main(int argc, char ** argv) { int sig, l, d, v; FILE * fin = stdin, * fout = stdout; switch (argc) { case 3: if (!(fout = fopen(argv[2], "w"))) { printm(M_ERROR, "Error opening file %s.\n", argv[3]); exit(-1); } case 2: if (!(fin = fopen(argv[1], "r"))) { printm(M_ERROR, "Error opening file %s.\n", argv[2]); exit(-1); } break; case 1: break; default: printm(M_BARE, "Usage: %s [filein] [fileout]\n", argv[0]); exit(-1); } verbosity = M_STATUS; fread(&sig, 1, 4, fin); fread(&d, 1, 4, fin); fread(&l, 1, 4, fin); switch (sig) { case 0x05a4c53: printm(M_STATUS, "Detected a SLZ-type 0 file.\n"); fread(&v, 1, 4, fin); copy(fin, fout, d); exit(0); case 0x15a4c53: scheme = schemes[VP_1]; printm(M_STATUS, "Detected a SLZ-type 1 file.\n"); break; case 0x25a4c53: scheme = schemes[VP_2]; printm(M_STATUS, "Detected a SLZ-type 2 file.\n"); break; default: printm(M_ERROR, "Not a SLZ file.\n"); exit(-1); } lzss_decomp(fin, fout, l); exit(0); }