#include #include #include #include #include #include "unalf.h" FILE *in_file, *out_file; char *in_filename, *self; static void usage(void) { printf("usage: %s [-l] file.alf\n", self); exit(1); } static void set_self(char *argv0) { char *p; self = argv0; p = strrchr(self, '/'); if(p) self = p + 1; } int main(int argc, char **argv) { char opt = 0; int listonly = 0; set_self(argv[0]); if(argc == 1) { fprintf(stderr, "%s: missing required argument(s)\n", self); usage(); } else if(argc > 3) { fprintf(stderr, "%s: too many arguments\n", self); usage(); } else if(argc == 2) { in_filename = argv[1]; } else { /* argc == 3 */ in_filename = argv[2]; if(argv[1][0] == '-') opt = argv[1][1]; else opt = argv[1][0]; if(opt == 'l' || opt == 'v') { listonly = 1; } else if(opt == 'x' || opt == 'e') { /* NOP */ } else { fprintf(stderr, "%s: unknown option '-%c'\n", self, opt); usage(); } } if(!(in_file = fopen(in_filename, "rb"))) { fprintf(stderr, "%s: ", self); perror(in_filename); exit(1); } if(listonly) list_alf(); else extract_alf(); exit(0); }