diff options
| -rw-r--r-- | common/cmd_nvedit.c | 15 | ||||
| -rw-r--r-- | include/common.h | 13 | 
2 files changed, 28 insertions, 0 deletions
| diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index 68b0f4f6d..d893aa185 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -315,6 +315,21 @@ int setenv_hex(const char *varname, ulong value)  	return setenv(varname, str);  } +ulong getenv_hex(const char *varname, ulong default_val) +{ +	const char *s; +	ulong value; +	char *endp; + +	s = getenv(varname); +	if (s) +		value = simple_strtoul(s, &endp, 16); +	if (!s || endp == s) +		return default_val; + +	return value; +} +  #ifndef CONFIG_SPL_BUILD  static int do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  { diff --git a/include/common.h b/include/common.h index 76c79ae58..28aa4b9d6 100644 --- a/include/common.h +++ b/include/common.h @@ -352,6 +352,19 @@ int	envmatch     (uchar *, int);  char	*getenv	     (const char *);  int	getenv_f     (const char *name, char *buf, unsigned len);  ulong getenv_ulong(const char *name, int base, ulong default_val); + +/** + * getenv_hex() - Return an environment variable as a hex value + * + * Decode an environment as a hex number (it may or may not have a 0x + * prefix). If the environment variable cannot be found, or does not start + * with hex digits, the default value is returned. + * + * @varname:		Variable to decode + * @default_val:	Value to return on error + */ +ulong getenv_hex(const char *varname, ulong default_val); +  /*   * Read an environment variable as a boolean   * Return -1 if variable does not exist (default to true) |