int r;
// Just call the parse function if we don't have any commands
- if (!ctx->commands)
+ if (!ctx->commands) {
+ if (!ctx->parse)
+ return ARGP_ERR_UNKNOWN;
+
return ctx->parse(key, arg, ctx->data);
+ }
switch (key) {
// Show help if no arguments have been passed
// Otherwise call the callback
default:
+ if (!ctx->parse)
+ return ARGP_ERR_UNKNOWN;
+
return ctx->parse(key, arg, ctx->data);
}
int arg_index = 0;
// Parse command line options
- r = argp_parse(options ? &parser : NULL, argc, argv, ARGP_IN_ORDER, &arg_index, &ctx);
+ r = argp_parse(&parser, argc, argv, ARGP_IN_ORDER, &arg_index, &ctx);
if (r)
return r;