From 1f3640f85c4fb811aaad9b500298c8a585a10ad8 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sat, 19 Mar 2022 09:55:11 -0700 Subject: til_settings: introduce til_settings_reset_descs() This is helpful for forcing underlying setup methods to redescribe their settings, regardless of what a til_settings_t's internal state is. --- src/til_settings.c | 9 +++++++++ src/til_settings.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/til_settings.c b/src/til_settings.c index 30156d6..152060d 100644 --- a/src/til_settings.c +++ b/src/til_settings.c @@ -226,6 +226,15 @@ int til_settings_add_value(til_settings_t *settings, const char *key, const char } +void til_settings_reset_descs(til_settings_t *settings) +{ + assert(settings); + + for (unsigned i = 0; i < settings->num; i++) + settings->settings[i]->desc = NULL; +} + + /* apply the supplied setting description generators to the supplied settings */ /* returns 0 when input settings are complete */ /* returns 1 when input settings are incomplete, storing the next setting's description needed in *next_setting */ diff --git a/src/til_settings.h b/src/til_settings.h index 52535fe..0ca0c6f 100644 --- a/src/til_settings.h +++ b/src/til_settings.h @@ -36,6 +36,7 @@ til_settings_t * til_settings_free(til_settings_t *settings); const char * til_settings_get_value(const til_settings_t *settings, const char *key, const til_setting_t **res_setting); const char * til_settings_get_key(const til_settings_t *settings, unsigned pos, const til_setting_t **res_setting); int til_settings_add_value(til_settings_t *settings, const char *key, const char *value, const til_setting_desc_t *desc); +void til_settings_reset_descs(til_settings_t *settings); int til_settings_get_and_describe_value(const til_settings_t *settings, const til_setting_desc_t *desc, const char **res_value, const til_setting_t **res_setting, const til_setting_desc_t **res_desc); char * til_settings_as_arg(const til_settings_t *settings); int til_settings_apply_desc_generators(const til_settings_t *settings, const til_setting_desc_generator_t generators[], unsigned n_generators, void *setup_context, const til_setting_t **res_setting, const til_setting_desc_t **res_desc); -- cgit v1.2.3