Add setenv_ulong() and setenv_addr()
authorSimon Glass <sjg@chromium.org>
Mon, 24 Oct 2011 17:59:59 +0000 (17:59 +0000)
committerWolfgang Denk <wd@denx.de>
Wed, 26 Oct 2011 19:32:42 +0000 (21:32 +0200)
It seems we put numbers and addresses into environment variables a lot.
We should have some functions to do this.

Signed-off-by: Simon Glass <sjg@chromium.org>
common/cmd_nvedit.c
include/common.h

index fa99c44b010628137d0693a2f95cff602503a5a8..4e27ba0b116beb9149fcb2185cbc16eeff93d633 100644 (file)
@@ -377,6 +377,36 @@ int setenv(const char *varname, const char *varvalue)
                return _do_env_set(0, 3, (char * const *)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(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(varname, str);
+}
+
 int do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        if (argc < 2)
index 8b719eac94cfb7289835e12d360d42e82fd712ec..9166ca1ed6a616db681d6940f8c9054388dc445f 100644 (file)
@@ -303,6 +303,8 @@ int saveenv      (void);
 int inline setenv    (const char *, const char *);
 #else
 int    setenv       (const char *, const char *);
+int setenv_ulong(const char *varname, ulong value);
+int setenv_addr(const char *varname, const void *addr);
 #endif /* CONFIG_PPC */
 #ifdef CONFIG_ARM
 # include <asm/mach-types.h>