[U-Boot] [PATCH v3 08/17] Add getenv_hex() to return an environment variable as hex
Simon Glass
sjg at chromium.org
Sat Apr 20 20:42:43 CEST 2013
This conversion is required in a number of places in U-Boot. Add a
standard function to provide this feature, so we avoid all the different
variations in the way it is coded.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v3: None
Changes in v2: None
common/cmd_nvedit.c | 15 +++++++++++++++
include/common.h | 13 +++++++++++++
2 files changed, 28 insertions(+)
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 68b0f4f..d893aa1 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 76c79ae..28aa4b9 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)
--
1.8.2.1
More information about the U-Boot
mailing list