X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Fopt.c;fp=ccan%2Fopt%2Fopt.c;h=0514dc8702dfc8ef2327d892f7cbd7606dec2b06;hp=09b29bcaf669e0768cb48866b8dc696f3ffc1c72;hb=c656dceb3f04c2e3da7af40824c97eff5119a0b9;hpb=97026cedabce510b2e2e547120f04fe0f6a5ecab diff --git a/ccan/opt/opt.c b/ccan/opt/opt.c index 09b29bca..0514dc87 100644 --- a/ccan/opt/opt.c +++ b/ccan/opt/opt.c @@ -207,14 +207,15 @@ bool opt_parse(int *argc, char *argv[], void (*errlog)(const char *fmt, ...)) /* This helps opt_usage. */ opt_argv0 = argv[0]; - while ((ret = parse_one(argc, argv, 0, &offset, errlog)) == 1); + while ((ret = parse_one(argc, argv, 0, &offset, errlog, false)) == 1); /* parse_one returns 0 on finish, -1 on error */ return (ret == 0); } -bool opt_early_parse(int argc, char *argv[], - void (*errlog)(const char *fmt, ...)) +static bool early_parse(int argc, char *argv[], + void (*errlog)(const char *fmt, ...), + bool ignore_unknown) { int ret; unsigned off = 0; @@ -226,7 +227,7 @@ bool opt_early_parse(int argc, char *argv[], /* This helps opt_usage. */ opt_argv0 = argv[0]; - while ((ret = parse_one(&argc, tmpargv, OPT_EARLY, &off, errlog)) == 1); + while ((ret = parse_one(&argc, tmpargv, OPT_EARLY, &off, errlog, ignore_unknown)) == 1); opt_alloc.free(tmpargv); @@ -234,6 +235,18 @@ bool opt_early_parse(int argc, char *argv[], return (ret == 0); } +bool opt_early_parse(int argc, char *argv[], + void (*errlog)(const char *fmt, ...)) +{ + return early_parse(argc, argv, errlog, false); +} + +bool opt_early_parse_incomplete(int argc, char *argv[], + void (*errlog)(const char *fmt, ...)) +{ + return early_parse(argc, argv, errlog, true); +} + void opt_free_table(void) { opt_alloc.free(opt_table);