From 150790c84f1773cfc82b13953d7894cd25474a83 Mon Sep 17 00:00:00 2001 From: johannes Date: Sun, 3 Mar 2024 16:55:50 +0100 Subject: added freeargs --- src/args.c | 29 +++++++++++++++++++++++++++-- src/main.c | 7 ++++++- 2 files changed, 33 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/args.c b/src/args.c index 99267b1..1e99fe4 100644 --- a/src/args.c +++ b/src/args.c @@ -157,14 +157,35 @@ int parseargs(int argc, char *args[]) } else { - argerr = 2; - errflag = NULL; + if (a[0] != '-') + { + argerr = 2; + errflag = NULL; + } + else + { + argerr = 3; + errflag = args[i]; + } return 0; } } return 1; } +void freeargs() +{ + for (int i = 0; i < ARGC; i++) + { + if (ARGS[i].opts) + free(ARGS[i].opts); + } + if (ARGS) + free(ARGS); + if (PARGS) + free(PARGS); +} + void runargs() { for (int i = 0; i < ARGC; i++) @@ -197,6 +218,7 @@ arg *getopt(char *flag, int pos) } return NULL; } + void printhelp() { char inctype[ARGTYPELEN] = {0, 0, 0}; @@ -264,6 +286,9 @@ void paerror(char *str) case 2: errstr = "Too many positional arguments"; break; + case 3: + errstr = "Unknown flag"; + break; default: errstr = "Unknown error"; break; diff --git a/src/main.c b/src/main.c index 085e416..2889601 100644 --- a/src/main.c +++ b/src/main.c @@ -50,7 +50,10 @@ void setdemo(arg *argument) { demofile = fopen(argument->opts[0], "r"); if (!demofile) - exitperror("Error: failed to open demofile, reason"); + { + fprintf(stderr, "Error: failed to open demofile '%s', ", argument->opts[0]); + exitperror("reason"); + } if (readdemo(demofile, &DEMO) < 0) { fprintf(stderr, "Error: failed to parse demo\n"); @@ -207,5 +210,7 @@ int main(int argc, char *argv[]) if (outarg) runoutput(outarg); + freeargs(); + exit(EXIT_SUCCESS); } -- cgit v1.2.3