env: add check/apply logic to himport_r()

Change hashtable so that a callback function will decide whether a
variable can be overwritten, and possibly apply the changes.

So add a new field to struct hsearch_data:

 o "apply" callback function to check whether a variable can be
    overwritten, and possibly immediately apply the changes;
    when NULL, no check is performed.

And a new argument to himport_r():
 o "do_apply": whether to call the apply callback function

NOTE: This patch does not change the current behavior.

Signed-off-by: Gerlando Falauto <gerlando.falauto@keymile.com>
Reviewed-by: Marek Vasut <marex@denx.de>
This commit is contained in:
Gerlando Falauto
2012-08-24 00:11:39 +00:00
committed by Tom Rini
parent 348b1f1c60
commit c5983592e9
5 changed files with 48 additions and 6 deletions

View File

@@ -184,6 +184,15 @@ void set_default_env(const char *s);
/* Import from binary representation into hash table */
int env_import(const char *buf, int check);
/*
* Check if variable "name" can be changed from oldval to newval,
* and if so, apply the changes (e.g. baudrate).
* When (flag & H_FORCE) is set, it does not print out any error
* message and forces overwriting of write-once variables.
*/
int env_check_apply(const char *name, const char *oldval,
const char *newval, int flag);
#endif /* DO_DEPS_ONLY */
#endif /* _ENVIRONMENT_H_ */