X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=ccan%2Fopt%2Fopt.h;h=0d508cf6fd173d1578bf26d1a703c3b12bbf3643;hb=a8722345053b7cd860499aa31fd6bb414c120cc8;hp=2aee409589b5ecf97a4da7d8b65a206a917c5954;hpb=8071ba125bb6893b88c02353638eeac220cb99c1;p=ccan diff --git a/ccan/opt/opt.h b/ccan/opt/opt.h index 2aee4095..0d508cf6 100644 --- a/ccan/opt/opt.h +++ b/ccan/opt/opt.h @@ -1,4 +1,4 @@ -/* Licensed under GPLv3+ - see LICENSE file for details */ +/* Licensed under GPLv2+ - see LICENSE file for details */ #ifndef CCAN_OPT_H #define CCAN_OPT_H #include @@ -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. * @@ -409,6 +425,12 @@ void opt_show_longval(char buf[OPT_SHOW_LEN], const long *l); char *opt_set_ulongval(const char *arg, unsigned long *ul); void opt_show_ulongval(char buf[OPT_SHOW_LEN], const unsigned long *ul); +/* Set an floating point value, various forms. */ +char *opt_set_floatval(const char *arg, float *f); +void opt_show_floatval(char buf[OPT_SHOW_LEN], const float *f); +char *opt_set_doubleval(const char *arg, double *d); +void opt_show_doubleval(char buf[OPT_SHOW_LEN], const double *d); + /* the following setting functions accept k, M, G, T, P, or E suffixes, which multiplies the numeric value by the corresponding power of 1000 or 1024 (for the _si and _bi versions, respectively). @@ -444,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);