--- embedtools/src/ube.c 2014/01/28 08:57:43 1.1.2.3 +++ embedtools/src/ube.c 2014/01/28 22:03:01 1.1.2.4 @@ -2,6 +2,7 @@ #include "ub_env.h" +cfg_root_t cfg; int Verbose; extern char compiled[], compiledby[], compilehost[]; @@ -13,6 +14,7 @@ Usage() "=== %s === %s@%s ===\n\n" " Syntax: ube [options] [set_value]\n" "\n" + "\t-c \tConfig file [default: /etc/ube.conf]\n" "\t-g \tSet parameter to value\n" "\t-s \tGet parameter value\n" "\t-q\t\tQuiet mode\n" @@ -23,11 +25,13 @@ Usage() int main(int argc, char **argv) { - char ch, mode = 0, szName[STRSIZ] = { 0 }, szVal[STRSIZ] = { 0 }; + char ch, mode = 0, szName[STRSIZ] = { 0 }, szVal[STRSIZ] = { 0 }, + szCfgName[PATH_MAX]; const char *str; int ret; - while ((ch = getopt(argc, argv, "hvqg:s:")) != -1) + strlcpy(szCfgName, UBE_CFGNAME, sizeof szCfgName); + while ((ch = getopt(argc, argv, "hvqg:s:c:")) != -1) switch (ch) { case 'g': mode |= 1; @@ -37,6 +41,9 @@ main(int argc, char **argv) mode |= 2; strlcpy(szName, optarg, sizeof szName); break; + case 'c': + strlcpy(szCfgName, optarg, sizeof szCfgName); + break; case 'v': Verbose++; break; @@ -55,6 +62,11 @@ main(int argc, char **argv) VERB(1) printf("u-boot-env: mode=0x%hhx name=%s value=%s\n", mode, szName, szVal); + if (cfgLoadConfig(szCfgName, &cfg)) { + printf("Error:: cfgLoadConfig() #%d - %s\n", cfg_GetErrno(), cfg_GetError()); + return 1; + } + if (!(mode & 0x7f)) { VERB(2) printf("u-boot-env: list variables\n"); } @@ -64,6 +76,7 @@ main(int argc, char **argv) str = ub_getenv(szName); if (!str) { printf("Error:: Variable %s not found!\n", szName); + cfgUnloadConfig(&cfg); return 2; } else if (mode & 0x80) printf("%s\n", str); @@ -76,11 +89,13 @@ 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; } if (!(mode & 0x80)) printf("Done\n"); } + cfgUnloadConfig(&cfg); return 0; }