diff --git a/readarg.h b/readarg.h index 1d3a317..fc56c0b 100644 --- a/readarg.h +++ b/readarg.h @@ -533,11 +533,7 @@ static void readarg_add_val(struct readarg_parser *rp, struct readarg_arg *arg, } static const char *readarg_skip_incl(const char *outer, const char *inner) { - while (*inner == *outer) { - if (!*inner) - return outer; - ++inner, ++outer; - } + for (; *inner && *inner == *outer; ++inner, ++outer); return !*inner ? outer : NULL; } diff --git a/test/test.c b/test/test.c index c747dcb..7228b51 100644 --- a/test/test.c +++ b/test/test.c @@ -13,6 +13,13 @@ enum opt { static int write_callback(void *ctx, const char *buf, size_t len); int main(int argc, char **argv) { + const char *progname = argv[0] == NULL ? "test" : argv[0]; + + struct readarg_helpgen_writer writer = { + .write = write_callback, + .ctx = NULL, + }; + struct readarg_opt opts[] = { [OPT_HELP] = { .names = { @@ -126,15 +133,7 @@ int main(int argc, char **argv) { .len = argc - 1, }); - while (readarg_parse(&rp)) - ; - - const char *progname = argv[0] == NULL ? "test" : argv[0]; - struct readarg_helpgen_writer writer = { - .write = write_callback, - .ctx = NULL, - }; - + while (readarg_parse(&rp)); if (rp.error != READARG_ESUCCESS) { fprintf(stderr, "Error: %d\n", rp.error); readarg_helpgen_put_usage(&rp, &writer, progname, "Usage"); @@ -158,6 +157,13 @@ int main(int argc, char **argv) { return 1; } + readarg_assign_opers(&rp); + if (rp.error != READARG_ESUCCESS) { + fprintf(stderr, "Error: %d\n", rp.error); + readarg_helpgen_put_usage(&rp, &writer, progname, "Usage"); + return 1; + } + printf("opt:\n"); { struct readarg_opt *curr = rp.opts;