env: common: accept flags on reset to default env
The function set_default_env() sets the hashtable flags for import_r().
Formally set_default_env() doesn't accept flags from its callers. In
practice the caller can (un)set the H_INTERACTIVE flag, but it has to be
done using the first character of the function's string argument. Other
flags like H_FORCE can't be set by the caller.
Change the function to accept flags argument. The benefits are:
1. The caller will have to explicitly set the H_INTERACTIVE flag,
instead of un-setting it using a special char in a string.
2. Add the ability to propagate flags from the caller to himport(),
especially the H_FORCE flag from do_env_default() in nvedit.c that
currently gets ignored for "env default -a -f" commands.
3. Flags and messages will not be coupled together. A caller will be
able to set flags without passing a string and vice versa.
Please note:
The propagation of H_FORCE from do_env_default() does not introduce any
functional changes, because currently himport_r() is set to destroy the
old environment regardless if H_FORCE flag is set or not. More changes
are needed to utilize the propagation of H_FORCE.
Signed-off-by: Yaniv Levinsky <yaniv.levinsky@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
diff --git a/common/board_r.c b/common/board_r.c
index e9f827a..64f2574 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -454,7 +454,7 @@
if (should_load_env())
env_relocate();
else
- set_default_env(NULL);
+ set_default_env(NULL, 0);
#ifdef CONFIG_OF_CONTROL
env_set_addr("fdtcontroladdr", gd->fdt_blob);
#endif
diff --git a/common/spl/spl_dfu.c b/common/spl/spl_dfu.c
index b8e3a6c..01178f6 100644
--- a/common/spl/spl_dfu.c
+++ b/common/spl/spl_dfu.c
@@ -38,7 +38,7 @@
int ret;
/* set default environment */
- set_default_env(0);
+ set_default_env(NULL, 0);
str_env = env_get(dfu_alt_info);
if (!str_env) {
pr_err("\"dfu_alt_info\" env variable not defined!\n");