X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Fopt.h;h=55a78d8ff139e9cbe1de384d4d1da0021557e3aa;hp=e06cd4424c746e215185481ce08375b6024e49d0;hb=f51a60f73a22533ec38c12fc63f2837e355a0f88;hpb=b0fa019adb998c20a8740f5696b61ae87d2a77a6;ds=sidebyside diff --git a/ccan/opt/opt.h b/ccan/opt/opt.h index e06cd442..55a78d8f 100644 --- a/ccan/opt/opt.h +++ b/ccan/opt/opt.h @@ -1,3 +1,4 @@ +/* Licensed under GPLv3+ - see LICENSE file for details */ #ifndef CCAN_OPT_H #define CCAN_OPT_H #include @@ -186,10 +187,12 @@ void opt_register_table(const struct opt_table *table, const char *desc); bool opt_parse(int *argc, char *argv[], void (*errlog)(const char *fmt, ...)); /** - * opt_free_table - free the table. + * opt_free_table - reset the opt library. * - * This frees the internal memory. Call this as the last - * opt function. + * This frees the internal memory and returns counters to zero. Call + * this as the last opt function to avoid memory leaks. You can also + * use this function to reset option handling to its initial state (no + * options registered). */ void opt_free_table(void); @@ -279,6 +282,41 @@ 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); +/* 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). + */ +char *opt_set_intval_bi(const char *arg, int *i); +char *opt_set_intval_si(const char *arg, int *i); +char *opt_set_uintval_bi(const char *arg, unsigned int *u); +char *opt_set_uintval_si(const char *arg, unsigned int *u); +char *opt_set_longval_bi(const char *arg, long *l); +char *opt_set_longval_si(const char *arg, long *l); +char *opt_set_ulongval_bi(const char *arg, unsigned long *ul); +char *opt_set_ulongval_si(const char *arg, unsigned long *ul); +char *opt_set_longlongval_bi(const char *arg, long long *ll); +char *opt_set_longlongval_si(const char *arg, long long *ll); +char *opt_set_ulonglongval_bi(const char *arg, unsigned long long *ll); +char *opt_set_ulonglongval_si(const char *arg, unsigned long long *ll); + + +void opt_show_intval_bi(char buf[OPT_SHOW_LEN], const int *x); +void opt_show_longval_bi(char buf[OPT_SHOW_LEN], const long *x); +void opt_show_longlongval_bi(char buf[OPT_SHOW_LEN], const long long *x); +void opt_show_uintval_bi(char buf[OPT_SHOW_LEN], const unsigned int *x); +void opt_show_ulongval_bi(char buf[OPT_SHOW_LEN], const unsigned long *x); +void opt_show_ulonglongval_bi(char buf[OPT_SHOW_LEN], const unsigned long long *x); + +void opt_show_intval_si(char buf[OPT_SHOW_LEN], const int *x); +void opt_show_longval_si(char buf[OPT_SHOW_LEN], const long *x); +void opt_show_longlongval_si(char buf[OPT_SHOW_LEN], const long long *x); +void opt_show_uintval_si(char buf[OPT_SHOW_LEN], const unsigned int *x); +void opt_show_ulongval_si(char buf[OPT_SHOW_LEN], const unsigned long *x); +void opt_show_ulonglongval_si(char buf[OPT_SHOW_LEN], const unsigned long long *x); + + + + /* Increment. */ char *opt_inc_intval(int *i);