env: Add H_DEFAULT flag

Add another internal environment flag which indicates that the operation
is resetting the environment to the default one. This allows the env code
to discern between import of external environment and reset to default.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Marek Vasut 2020-07-07 20:51:34 +02:00 committed by Tom Rini
parent 0f036bf4b8
commit ef9bef2bfe
2 changed files with 3 additions and 1 deletions

3
env/common.c vendored
View File

@ -81,6 +81,7 @@ void env_set_default(const char *s, int flags)
debug("Using default environment\n"); debug("Using default environment\n");
} }
flags |= H_DEFAULT;
if (himport_r(&env_htab, (char *)default_environment, if (himport_r(&env_htab, (char *)default_environment,
sizeof(default_environment), '\0', flags, 0, sizeof(default_environment), '\0', flags, 0,
0, NULL) == 0) 0, NULL) == 0)
@ -99,7 +100,7 @@ int env_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; flags |= H_NOCLEAR | H_DEFAULT;
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',
flags, 0, nvars, vars); flags, 0, nvars, vars);

View File

@ -112,5 +112,6 @@ int hwalk_r(struct hsearch_data *htab,
#define H_MATCH_METHOD (H_MATCH_IDENT | H_MATCH_SUBSTR | H_MATCH_REGEX) #define H_MATCH_METHOD (H_MATCH_IDENT | H_MATCH_SUBSTR | H_MATCH_REGEX)
#define H_PROGRAMMATIC (1 << 9) /* indicate that an import is from env_set() */ #define H_PROGRAMMATIC (1 << 9) /* indicate that an import is from env_set() */
#define H_ORIGIN_FLAGS (H_INTERACTIVE | H_PROGRAMMATIC) #define H_ORIGIN_FLAGS (H_INTERACTIVE | H_PROGRAMMATIC)
#define H_DEFAULT (1 << 10) /* indicate that an import is default env */
#endif /* _SEARCH_H_ */ #endif /* _SEARCH_H_ */