- set_default_env();
- }
- entrycount = 0;
- envlist_import();
- return 0;
-}
-
-
-
-env_item_t *envlist_search(const __memx char *name)
-{
- 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);
-}
-
-
-static
-env_item_t *envlist_enter(env_item_t *e)
-{
- char *key = e->name.ram;
- const size_t size = sizeof(env_item_t);
- env_item_t *ep;
-
- ep = bsearch(key, env_list, entrycount,
- size, comp_env_key_item);
-
- if (ep == NULL) {
- if (entrycount < CONFIG_ENVVAR_MAX) {
-
- env_list[entrycount++] = *e;
- qsort(env_list, entrycount, size, comp_env_items);
- ep = bsearch(key, env_list, entrycount,
- size, comp_env_key_item);
- }
- } else {
- if ((ep->flags & EF_V_EEP) == 0) {
- free(ep->val.ram);
- }
- ep->val.ram = e->val.ram;
- }
-
- if (ep != NULL) {
- ep->flags |= EF_DIRTY;
- ep->flags &= ~EF_V_EEP;
-
- if ((ep->flags & EF_N_EEP) == 0) {
- int nlen = strnlen(key, CONFIG_SYS_ENV_NAMELEN);
- char *name = xmalloc(nlen + 1);
- if (name == NULL) {
- printf_P(PSTR("## Can't malloc %d bytes\n"),
- nlen + 1);
- return NULL;
- }
- strcpy(name, key);
- name[nlen] = '\0';
- ep->name.ram = name;
- }