diff options
-rw-r--r-- | src/main.c | 4 | ||||
-rw-r--r-- | src/til.c | 2 | ||||
-rw-r--r-- | src/til_settings.c | 11 | ||||
-rw-r--r-- | src/til_settings.h | 2 |
4 files changed, 13 insertions, 6 deletions
@@ -219,11 +219,11 @@ static int setup_from_args(til_args_t *args, setup_t *res_setup, const til_setti */ srand(setup.seed); - setup.module_settings = til_settings_new(args->module); + setup.module_settings = til_settings_new("module", args->module); if (!setup.module_settings) goto _err; - setup.video_settings = til_settings_new(args->video); + setup.video_settings = til_settings_new("video", args->video); if (!setup.video_settings) goto _err; @@ -327,7 +327,7 @@ int til_module_randomize_setup(const til_module_t *module, unsigned seed, til_se if (!module->setup) return 0; - settings = til_settings_new(NULL); + settings = til_settings_new(module->name, NULL); if (!settings) return -ENOMEM; diff --git a/src/til_settings.c b/src/til_settings.c index 3e26686..9fce32f 100644 --- a/src/til_settings.c +++ b/src/til_settings.c @@ -31,6 +31,7 @@ char * strndup(const char *s, size_t n) /* Split form of key=value[,key=value...] settings string */ typedef struct til_settings_t { + const char *label; unsigned num; til_setting_t **settings; } til_settings_t; @@ -62,7 +63,7 @@ static int add_value(til_settings_t *settings, const char *key, const char *valu /* split settings_string into a data structure */ -til_settings_t * til_settings_new(const char *settings_string) +til_settings_t * til_settings_new(const char *label, const char *settings_string) { til_settings_fsm_state_t state = TIL_SETTINGS_FSM_STATE_KEY; const char *p, *token; @@ -71,9 +72,15 @@ til_settings_t * til_settings_new(const char *settings_string) char *value_buf; size_t value_sz; + assert(label); + settings = calloc(1, sizeof(til_settings_t)); if (!settings) - return NULL; + goto _err; + + settings->label = strdup(label); + if (!settings->label) + goto _err; if (!settings_string) return settings; diff --git a/src/til_settings.h b/src/til_settings.h index df8a307..93c0ed8 100644 --- a/src/til_settings.h +++ b/src/til_settings.h @@ -33,7 +33,7 @@ struct til_setting_t { void *user_data; }; -til_settings_t * til_settings_new(const char *settings); +til_settings_t * til_settings_new(const char *label, const char *settings); til_settings_t * til_settings_free(til_settings_t *settings); const char * til_settings_get_value(const til_settings_t *settings, const char *key, til_setting_t **res_setting); const char * til_settings_get_key(const til_settings_t *settings, unsigned pos, til_setting_t **res_setting); |