diff options
author | Tom Rini <trini@ti.com> | 2013-03-04 11:14:27 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-03-04 11:14:27 -0500 |
commit | 1c9f47ab2a2e9b62d08d39bfb9c4adc8f8edc5da (patch) | |
tree | fa4ee32d67f02d1c8fa80a55b9d85982cedac062 /common/cmd_setexpr.c | |
parent | c259188b203d95e4a854e7e29b9e4472cc982f65 (diff) | |
parent | 218da0f35f4b5e5bf13d3dba6d975d4d5d65516f (diff) |
Merge branch 'mem' of git://git.denx.de/u-boot-x86
Diffstat (limited to 'common/cmd_setexpr.c')
-rw-r--r-- | common/cmd_setexpr.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/common/cmd_setexpr.c b/common/cmd_setexpr.c index 5a042951da5..7a38e945070 100644 --- a/common/cmd_setexpr.c +++ b/common/cmd_setexpr.c @@ -53,7 +53,7 @@ static ulong get_arg(char *s, int w) static int do_setexpr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { ulong a, b; - char buf[16]; + ulong value; int w; /* Validate arguments */ @@ -67,8 +67,7 @@ static int do_setexpr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) a = get_arg(argv[2], w); if (argc == 3) { - sprintf(buf, "%lx", a); - setenv(argv[1], buf); + setenv_hex(argv[1], a); return 0; } @@ -76,20 +75,36 @@ static int do_setexpr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) b = get_arg(argv[4], w); switch (argv[3][0]) { - case '|': sprintf(buf, "%lx", (a | b)); break; - case '&': sprintf(buf, "%lx", (a & b)); break; - case '+': sprintf(buf, "%lx", (a + b)); break; - case '^': sprintf(buf, "%lx", (a ^ b)); break; - case '-': sprintf(buf, "%lx", (a - b)); break; - case '*': sprintf(buf, "%lx", (a * b)); break; - case '/': sprintf(buf, "%lx", (a / b)); break; - case '%': sprintf(buf, "%lx", (a % b)); break; + case '|': + value = a | b; + break; + case '&': + value = a & b; + break; + case '+': + value = a + b; + break; + case '^': + value = a ^ b; + break; + case '-': + value = a - b; + break; + case '*': + value = a * b; + break; + case '/': + value = a / b; + break; + case '%': + value = a % b; + break; default: printf("invalid op\n"); return 1; } - setenv(argv[1], buf); + setenv_hex(argv[1], value); return 0; } |