X-Git-Url: http://git.itanic.dy.fi/?p=log-plotter;a=blobdiff_plain;f=config.c;fp=config.c;h=1dcc9c859224d394fd30d64e369417470cea1dbf;hp=7caa63de662b20fd2b23d1720f4b8b1d5beb9ec2;hb=09a5e21cff7551e037385280e2a85e95c41072e4;hpb=6100946ec13ca780c199b5202995c03c963dede1 diff --git a/config.c b/config.c index 7caa63d..1dcc9c8 100644 --- a/config.c +++ b/config.c @@ -62,9 +62,8 @@ static void init_variable_value(struct variable_value *v) bzero(v, sizeof(*v)); } -static int store_str_variable_value_to_array(const char *variable, - const char *value, - struct plotter_config *cfg) +static struct variable_value *prepare_slot_for_insertion( + struct plotter_config *cfg, const char *variable) { struct variable_value *v; int i; @@ -82,12 +81,15 @@ static int store_str_variable_value_to_array(const char *variable, continue; free(v[i].name); + v[i].name = NULL; free(v[i].ptr); - goto out_store; + v[i].ptr = NULL; + + return &v[i]; } /* - * Failed to find an existing variable with same type, create + * Failed to find an existing variable with same name, create * a new one. Resize the variable array so that there is room * for the new entry and one terminator entry (with all fields * zeroed). @@ -97,10 +99,36 @@ static int store_str_variable_value_to_array(const char *variable, v = cfg->variables; init_variable_value(&cfg->variables[i + 1]); -out_store: - v[i].name = strdup(variable); - v[i].type = TYPE_STRING; - v[i].ptr = strdup(value); + return &v[i]; +} + +static int store_str_variable_value_to_array(const char *variable, + const char *value, + struct plotter_config *cfg) +{ + struct variable_value *v; + + v = prepare_slot_for_insertion(cfg, variable); + + v->name = strdup(variable); + v->type = TYPE_STRING; + v->ptr = strdup(value); + + return 0; +} + +int store_int_variable_value_to_array(const char *variable, int value, + struct plotter_config *cfg) +{ + struct variable_value *v; + int *p; + + v = prepare_slot_for_insertion(cfg, variable); + + v->name = strdup(variable); + v->type = TYPE_INT; + p = v->ptr = malloc(sizeof(value)); + *p = value; return 0; }