X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fopt%2Fopt.h;h=0d508cf6fd173d1578bf26d1a703c3b12bbf3643;hb=33ba12adf082b9432ae0471b6bb742cde14254ed;hp=f891002fa53890be40251b3e2557c4af3d2cd15e;hpb=b989e06c093fb7a2befae277f684fa75b64b9ef5;p=ccan diff --git a/ccan/opt/opt.h b/ccan/opt/opt.h index f891002f..0d508cf6 100644 --- a/ccan/opt/opt.h +++ b/ccan/opt/opt.h @@ -185,7 +185,7 @@ void opt_register_table(const struct opt_table *table, const char *desc); * string (or see opt_set_alloc) and return false. * * Example: - * static char *explode(const char *optarg, void *unused) + * static char *explode(const char *optarg, void *unused UNNEEDED) * { * errx(1, "BOOM! %s", optarg); * } @@ -372,6 +372,22 @@ char *opt_invalid_argument(const char *arg); */ char *opt_usage(const char *argv0, const char *extra); +/** + * opt_usage_exit_fail - complain about bad usage to stderr, exit with status 1. + * @msg...: printf-style message to output. + * + * This prints argv[0] (if opt_parse has been called), a colon, then + * the message to stderr (just like errx()). Then it prints out the + * usage message, taken from any registered option which uses + * opt_usage_and_exit() as described in opt_usage(argv0, NULL) above. + * Then it exits with status 1. + * + * Example: + * if (argc != 5) + * opt_usage_exit_fail("Need 5 arguments, only got %u", argc); + */ +void opt_usage_exit_fail(const char *msg, ...) NORETURN; + /** * opt_hidden - string for undocumented options. * @@ -450,8 +466,9 @@ void opt_show_ulonglongval_si(char buf[OPT_SHOW_LEN], const unsigned long long * -/* Increment. */ +/* Increment and decrement. */ char *opt_inc_intval(int *i); +char *opt_dec_intval(int *i); /* Display version string to stdout, exit(0). */ char *opt_version_and_exit(const char *version);