// This exists for a reason. I don't remember what it is, though.. #include #include #include #include #include void usage(char *); enum action_type { compress, decompress }; int main(int argc, char *argv[]) { if (argc > 2) usage(argv[0]); action_type action = compress; // default to compressing if (argc > 1) { // check arguments std::string s = argv[1]; if (s == "-d") action = decompress; else if (s == "-c") action = compress; else usage(argv[0]); } const char *opt = (action) ? "-d" : "--"; execlp("gzip", argv[0], "-cq", opt, 0); std::cout << argv[0] << ": error " << (action ? "de" : "") << "compressing: " << std::strerror(errno) << std::endl; return 1; } void usage(char *name) { std::cout << "usage: " << name << " [-c] [-d]" << std::endl; std::exit(1); }