]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/env.c
getenv_ulong(), TWI int opt
[z180-stamp.git] / avr / env.c
index 28437a433ccba7286eac672f9c2e8737b0e20085..79811166d9e33e4f261b704610ba100d34468866 100644 (file)
--- a/avr/env.c
+++ b/avr/env.c
@@ -775,28 +775,41 @@ int setenv_hex(const char *varname, unsigned long value)
        return setenv(varname, str);
 }
 
+
 /**
- * Get an environment variable as a hex value
+ * Decode the integer value of an environment variable and return it.
  *
- * @param varname      Environment variable to get
- * @param default_val  Return this, if variable does not exist
- * @return hex value of variable or default_val
+ * @param name         Name of environemnt variable
+ * @param base         Number base to use (normally 10, or 16 for hex)
+ * @param default_val  Default value to return if the variable is not
+ *                     found
+ * @return the decoded value, or default_val if not found
  */
-unsigned long getenv_hex(const char *varname, unsigned long default_val)
+unsigned long getenv_ulong(const char *name, int base, unsigned long default_val)
 {
-       const char *s;
+       char buf[16];
        unsigned long value;
-       char *endp;
+       char *vp, *endp;
+
+       env_item_t *ep = envlist_search(name);
 
-       s = getenv(varname);
-       if (s)
-               value = strtoul(s, &endp, 16);
-       if (!s || endp == s)
-               return default_val;
+       if (ep != NULL ) {
+               if (ep->flags & EF_V_EEP) {
+                       varval_get(buf, ep->val.eep, sizeof(buf));
+                       vp = buf;
+               } else
+                       vp = ep->val.ram;
+               if (vp != NULL) {
+                       value = strtoul(vp, &endp, base);
+                       if (endp != vp)
+                               return value;
+               }
+       }
 
-       return value;
+       return default_val;
 }
 
+
 command_ret_t do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        (void) cmdtp;