summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2011-10-24 17:59:59 +0000
committerGerrit <chrome-bot@google.com>2011-11-16 20:46:08 -0800
commit5057f67800dd116b73816d75bbeb0e4ce1b66302 (patch)
tree8adfccceb8caf013ccc23658ba01980d59c77452 /common
parent1c1cd642bedc8d27b1a6d1cfed7b972c9f0d90a5 (diff)
BACKPORT: Add setenv_ulong() and setenv_addr()
It seems we put numbers and addresses into environment variables a lot. We should have some functions to do this. (cherry picked from commit d67f10c) Change-Id: I922e72a7db872f26774459a6dc074a80016ef904 Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/11792 Reviewed-by: Doug Anderson <dianders@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/cmd_nvedit.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index b451f2853e..00814694ee 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -376,6 +376,36 @@ int setenv(char *varname, char *varvalue)
return _do_env_set(0, 3, argv);
}
+/**
+ * Set an environment variable to an integer value
+ *
+ * @param varname Environmet variable to set
+ * @param value Value to set it to
+ * @return 0 if ok, 1 on error
+ */
+int setenv_ulong(const char *varname, ulong value)
+{
+ /* TODO: this should be unsigned */
+ char *str = simple_itoa(value);
+
+ return setenv((char *)varname, str);
+}
+
+/**
+ * Set an environment variable to an address in hex
+ *
+ * @param varname Environmet variable to set
+ * @param addr Value to set it to
+ * @return 0 if ok, 1 on error
+ */
+int setenv_addr(const char *varname, const void *addr)
+{
+ char str[17];
+
+ sprintf(str, "%x", (uintptr_t)addr);
+ return setenv((char *)varname, str);
+}
+
int do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
if (argc < 2)