exit(0);
}
-void opt_conf_hook_internal(struct opt_item * opt, uns event, const char * value UNUSED, void * data UNUSED) {
- static enum {
- OPT_CONF_HOOK_BEGIN,
- OPT_CONF_HOOK_CONFIG,
- OPT_CONF_HOOK_OTHERS
- } state = OPT_CONF_HOOK_BEGIN;
+void opt_conf_hook_internal(struct opt_item * opt, uns event, const char * value UNUSED, void * data) {
+ struct opt_context *oc = data;
struct cf_context *cc = cf_get_context();
if (event == OPT_HOOK_FINAL) {
bool confopt = opt->flags & OPT_BEFORE_CONFIG;
- switch (state) {
+ switch (oc->conf_state) {
case OPT_CONF_HOOK_BEGIN:
if (confopt)
- state = OPT_CONF_HOOK_CONFIG;
+ oc->conf_state = OPT_CONF_HOOK_CONFIG;
else {
opt_conf_end_of_options(cc);
- state = OPT_CONF_HOOK_OTHERS;
+ oc->conf_state = OPT_CONF_HOOK_OTHERS;
}
break;
case OPT_CONF_HOOK_CONFIG:
if (!confopt) {
opt_conf_end_of_options(cc);
- state = OPT_CONF_HOOK_OTHERS;
+ oc->conf_state = OPT_CONF_HOOK_OTHERS;
}
break;
case OPT_CONF_HOOK_OTHERS:
#define opt_precompute ucw_opt_precompute
#endif
+enum opt_conf_state {
+ OPT_CONF_HOOK_BEGIN,
+ OPT_CONF_HOOK_CONFIG,
+ OPT_CONF_HOOK_OTHERS,
+};
+
struct opt_context {
const struct opt_section * options;
struct opt_precomputed * opts;
int positional_max;
int positional_count;
bool stop_parsing;
+ enum opt_conf_state conf_state;
};
struct opt_precomputed {