Instead of overwriting the whole hierarchy beneath a globalvar, the set_single function only sets the specific globalvar. Signed-off-by: Rouven Czerwinski <r.czerwinski@xxxxxxxxxxxxxx> --- common/globalvar.c | 11 +++++++++++ include/globalvar.h | 1 + 2 files changed, 12 insertions(+) diff --git a/common/globalvar.c b/common/globalvar.c index 98a028a68a..848a7d6832 100644 --- a/common/globalvar.c +++ b/common/globalvar.c @@ -399,6 +399,17 @@ void globalvar_set_match(const char *match, const char *val) } } +void globalvar_set_single(const char *match, const char *val) +{ + struct param_d *param; + + list_for_each_entry(param, &global_device.parameters, list) { + if (!strncmp(match, param->name, strlen(match)) + && strlen(match) == strlen(param->name)) + dev_set_param(&global_device, param->name, val); + } +} + static int globalvar_simple_set(struct device_d *dev, struct param_d *p, const char *val) { struct device_d *rdev; diff --git a/include/globalvar.h b/include/globalvar.h index fc85e93e14..ceed020ff4 100644 --- a/include/globalvar.h +++ b/include/globalvar.h @@ -15,6 +15,7 @@ int globalvar_add_simple(const char *name, const char *value); void globalvar_remove(const char *name); char *globalvar_get_match(const char *match, const char *separator); void globalvar_set_match(const char *match, const char *val); +void globalvar_set_single(const char *match, const char *val); int globalvar_add_simple_string(const char *name, char **value); int globalvar_add_simple_int(const char *name, int *value, -- 2.28.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox