+/* Licensed under GPLv3+ - see LICENSE file for details */
#include <ccan/opt/opt.h>
#include <string.h>
#include <errno.h>
char *(*cb)(void *arg),
char *(*cb_arg)(const char *optarg, void *arg),
void (*show)(char buf[OPT_SHOW_LEN], const void *arg),
- void *arg, const char *desc)
+ const void *arg, const char *desc)
{
struct opt_table opt;
opt.names = names;
opt.cb = cb;
opt.cb_arg = cb_arg;
opt.show = show;
- opt.arg = arg;
+ opt.u.carg = arg;
opt.desc = desc;
check_opt(&opt);
add_opt(&opt);
}
/* We store the table length in arg ptr. */
if (desc)
- opt_table[start].arg = (void *)(intptr_t)(opt_count - start);
+ opt_table[start].u.tlen = (opt_count - start);
}
/* Parse your arguments. */
return (ret == 0);
}
+void opt_free_table(void)
+{
+ free(opt_table);
+ opt_table=0;
+}
+
void opt_log_stderr(const char *fmt, ...)
{
va_list ap;