mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
cmd: nvedit: propagate envflag to set_default_vars
The env_flag in do_env_default() doesn't get propagated and therefore gets ignored by himport_r(). This breaks to ability to "forcibly" reset variables to their default values using the environment command. Scenario example of the problem: # setenv kernel uImage # setenv .flags kernel:so # env default -f kernel ## Error: Can't overwrite "kernel" himport_r: can't insert "kernel=zImage" into hash table Change the call path so it will pass the flag correctly. Signed-off-by: Yaniv Levinsky <yaniv.levinsky@compulab.co.il> Acked-by: Igor Grinberg <grinberg@compulab.co.il>
This commit is contained in:
parent
30091494eb
commit
477f8116d5
3 changed files with 5 additions and 4 deletions
|
@ -807,7 +807,7 @@ static int do_env_default(cmd_tbl_t *cmdtp, int flag,
|
||||||
}
|
}
|
||||||
if (!all && (argc > 0)) {
|
if (!all && (argc > 0)) {
|
||||||
/* Reset individual variables */
|
/* Reset individual variables */
|
||||||
set_default_vars(argc, argv);
|
set_default_vars(argc, argv, env_flag);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
5
env/common.c
vendored
5
env/common.c
vendored
|
@ -91,15 +91,16 @@ void set_default_env(const char *s)
|
||||||
|
|
||||||
|
|
||||||
/* [re]set individual variables to their value in the default environment */
|
/* [re]set individual variables to their value in the default environment */
|
||||||
int set_default_vars(int nvars, char * const vars[])
|
int set_default_vars(int nvars, char * const vars[], int flags)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Special use-case: import from default environment
|
* Special use-case: import from default environment
|
||||||
* (and use \0 as a separator)
|
* (and use \0 as a separator)
|
||||||
*/
|
*/
|
||||||
|
flags |= H_NOCLEAR | H_INTERACTIVE;
|
||||||
return himport_r(&env_htab, (const char *)default_environment,
|
return himport_r(&env_htab, (const char *)default_environment,
|
||||||
sizeof(default_environment), '\0',
|
sizeof(default_environment), '\0',
|
||||||
H_NOCLEAR | H_INTERACTIVE, 0, nvars, vars);
|
flags, 0, nvars, vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -275,7 +275,7 @@ char *env_get_default(const char *name);
|
||||||
void set_default_env(const char *s);
|
void set_default_env(const char *s);
|
||||||
|
|
||||||
/* [re]set individual variables to their value in the default environment */
|
/* [re]set individual variables to their value in the default environment */
|
||||||
int set_default_vars(int nvars, char * const vars[]);
|
int set_default_vars(int nvars, char * const vars[], int flags);
|
||||||
|
|
||||||
/* Import from binary representation into hash table */
|
/* Import from binary representation into hash table */
|
||||||
int env_import(const char *buf, int check);
|
int env_import(const char *buf, int check);
|
||||||
|
|
Loading…
Reference in a new issue