]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/env.c
envlist_search
[z180-stamp.git] / avr / env.c
index 79811166d9e33e4f261b704610ba100d34468866..343d88204b4e2636cc21b878101d603aa0ff5564 100644 (file)
--- a/avr/env.c
+++ b/avr/env.c
@@ -321,10 +321,23 @@ int env_init(void)
 }      
 
 
-static
-env_item_t *envlist_search(const char *name)
+
+env_item_t *envlist_search(const __memx char *name)
 {
-       return bsearch(name, env_list, entrycount, 
+       char *p = (char *) name;
+
+#ifdef __MEMX
+       char buf[CONFIG_SYS_ENV_NAMELEN+1];
+
+       if (__builtin_avr_flash_segment(name) != -1) {
+               p = buf;
+               while ((*p++ = *name++) != '\0')
+                       ;
+               p = buf;
+       }
+#endif /* __MEMX */
+
+       return bsearch(p, env_list, entrycount,
                                sizeof(env_item_t), comp_env_key_item);
 }
                        
@@ -407,7 +420,7 @@ int envlist_delete(const char *name)
 
        
 static
-env_item_t *envlist_get(const char *name, uint_fast8_t flag)
+env_item_t *envlist_get(const __memx char *name, uint_fast8_t flag)
 {
        env_item_t *ep;
        
@@ -434,7 +447,7 @@ env_item_t *envlist_get(const char *name, uint_fast8_t flag)
 }
 
 
-char *getenv(const char *name)
+char *getenv(const __memx char *name)
 {
        env_item_t *ep;
        char *ret = NULL;
@@ -569,7 +582,7 @@ int env_item_print(env_item_t *ep)
  * Returns -1 in case of error, or length of printed string
  */
 static 
-int env_print(char *name)
+int env_print(const __memx char *name)
 {
        int len = -1;
 
@@ -767,7 +780,7 @@ int setenv_ulong(const char *varname, unsigned long value)
  * @param value                Value to set it to
  * @return 0 if ok, 1 on error
  */
-int setenv_hex(const char *varname, unsigned long value)
+int setenv_hex(const __memx char *varname, unsigned long value)
 {
        char str[sizeof(unsigned long) *2 + 1];
 
@@ -785,7 +798,7 @@ int setenv_hex(const char *varname, unsigned long value)
  *                     found
  * @return the decoded value, or default_val if not found
  */
-unsigned long getenv_ulong(const char *name, int base, unsigned long default_val)
+unsigned long getenv_ulong(const __memx char *name, int base, unsigned long default_val)
 {
        char buf[16];
        unsigned long value;