--- embedtools/src/ube.c 2014/01/28 22:07:45 1.1.2.5 +++ embedtools/src/ube.c 2014/01/28 22:22:34 1.1.2.6 @@ -29,7 +29,7 @@ main(int argc, char **argv) char ch, mode = 0, szName[STRSIZ] = { 0 }, szVal[STRSIZ] = { 0 }, szCfgName[PATH_MAX], szSec[STRSIZ]; const char *str; - int ret; + int ret = 0; strlcpy(szCfgName, UBE_CFGNAME, sizeof szCfgName); strlcpy(szSec, UBE_SECTION, sizeof szSec); @@ -72,6 +72,11 @@ main(int argc, char **argv) return 1; } + if (ub_load(szSec)) { + cfgUnloadConfig(&cfg); + return 1; + } + if (!(mode & 0x7f)) { VERB(2) printf("u-boot-env: list variables\n"); } @@ -81,8 +86,8 @@ main(int argc, char **argv) str = ub_getenv(szName); if (!str) { printf("Error:: Variable %s not found!\n", szName); - cfgUnloadConfig(&cfg); - return 2; + ret = 2; + goto end; } else if (mode & 0x80) printf("%s\n", str); else @@ -94,13 +99,15 @@ main(int argc, char **argv) ret = ub_setenv(szName, argc ? szVal : NULL); if (ret) { printf("Error:: Writing variable %s!\n", szName); - cfgUnloadConfig(&cfg); - return 3; + ret = 3; + goto end; } if (!(mode & 0x80)) printf("Done\n"); } +end: + ub_unload(); cfgUnloadConfig(&cfg); - return 0; + return ret; }