diff options
author | Leo C | 2014-08-25 16:44:27 +0200 |
---|---|---|
committer | Leo C | 2014-08-30 13:38:54 +0200 |
commit | d04c2fedf2729db314ae21664b14e6fa4a53e300 (patch) | |
tree | 8c58016f31cd58b2d00e3f6bbe58d0e04d2749eb /avr/env.c | |
parent | e2aab84a226d6e216bb18069b7ec2086bc536089 (diff) | |
download | z180-stamp-d04c2fedf2729db314ae21664b14e6fa4a53e300.zip |
envlist_search
Diffstat (limited to 'avr/env.c')
-rw-r--r-- | avr/env.c | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -321,10 +321,23 @@ int env_init(void) } -static + 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); } @@ -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]; |