summaryrefslogtreecommitdiff
path: root/src/args.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/args.c')
-rw-r--r--src/args.c29
1 files changed, 27 insertions, 2 deletions
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;