--- embedtools/src/ub_env.c 2014/01/28 22:03:01 1.1.2.3 +++ embedtools/src/ub_env.c 2014/01/28 22:37:07 1.1.2.5 @@ -2,16 +2,26 @@ #include "ub_env.h" +env_t *env; + + static int -ub_flash_io(env_t * __restrict e, int mode) +ub_flash_io(const char *csSec, int mode) { int f, ret = 0; + const char *str; FTRACE(4); - f = open(DRV_UB_ENV_MAP, mode); + str = cfg_getAttribute(&cfg, csSec, "drive"); + if (!str) { + printf("Error:: drive not found!\n"); + return -1; + } + + f = open(str, mode); if (f == -1) { - printf("Error:: Can't access u-boot-env device %s\n", DRV_UB_ENV_MAP); + printf("Error:: Can't access u-boot-env device %s\n", str); return -1; } @@ -23,8 +33,39 @@ ub_flash_io(env_t * __restrict e, int mode) return ret; } +int +ub_load(const char *csSec) +{ + const char *str; + size_t siz; + + FTRACE(4); + + str = cfg_getAttribute(&cfg, csSec, "size"); + siz = strtol(str, NULL, 0); + if (!siz) + return -1; + + env = e_malloc(siz); + if (!env) { + ELIBERR(elwix); + return -1; + } + + return 0; +} + +void +ub_unload() +{ + FTRACE(4); + + if (env) + e_free(env); +} + const char* -ub_getenv(const char *csName) +ub_getenv(const char *csSec, const char *csName) { const char *str = NULL; @@ -34,7 +75,7 @@ ub_getenv(const char *csName) } int -ub_setenv(const char *csName, const char *csValue) +ub_setenv(const char *csSec, const char *csName, const char *csValue) { FTRACE(3);