From e2da2bffe58a76c091d3496bd3ca2d2f18ea2eb6 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 13 Nov 2025 05:39:38 -0500 Subject: initial commit --- src/unalf.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/unalf.c (limited to 'src/unalf.c') diff --git a/src/unalf.c b/src/unalf.c new file mode 100644 index 0000000..ba6405e --- /dev/null +++ b/src/unalf.c @@ -0,0 +1,66 @@ +#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); +} -- cgit v1.2.3