env: remove vars that are not in default env
current env_set_default_vars() doesn't delete var that are not in the imported env. hashtable removes vars that are not in the imported env but present in the current env only if H_NOCLEAR flag is not set. This change is to avoid passing H_NOCLEAR flag if specific vars are passed to env_set_default_vars() Without this change: Marvell>> env default boot_mode Marvell>> With the change: Marvell>> env default boot_mode WARNING: 'boot_mode' not in imported env, deleting it! Signed-off-by: Ravi Minnikanti <rminnikanti@marvell.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:

committed by
Tom Rini

parent
dbb6b5a010
commit
2a521d01e6
10
env/common.c
vendored
10
env/common.c
vendored
@@ -401,7 +401,15 @@ int env_set_default_vars(int nvars, char * const vars[], int flags)
|
||||
* Special use-case: import from default environment
|
||||
* (and use \0 as a separator)
|
||||
*/
|
||||
flags |= H_NOCLEAR | H_DEFAULT;
|
||||
|
||||
/*
|
||||
* When vars are passed remove variables that are not in
|
||||
* the default environment.
|
||||
*/
|
||||
if (!nvars)
|
||||
flags |= H_NOCLEAR;
|
||||
|
||||
flags |= H_DEFAULT;
|
||||
return himport_r(&env_htab, default_environment,
|
||||
sizeof(default_environment), '\0',
|
||||
flags, 0, nvars, vars);
|
||||
|
Reference in New Issue
Block a user