diff options
| author | Simon Glass <sjg@chromium.org> | 2013-02-24 17:33:22 +0000 | 
|---|---|---|
| committer | Simon Glass <sjg@chromium.org> | 2013-02-28 19:09:23 -0800 | 
| commit | 41ef372c1a2d344621c74aa4bce5cdb0970ba5f1 (patch) | |
| tree | 9abdeda0b3b87a70e4f3929e83ddd15f4704377f /common/cmd_setexpr.c | |
| parent | bfc59966431e6335fd5be0589eec073902cc7bb3 (diff) | |
| download | olio-uboot-2014.01-41ef372c1a2d344621c74aa4bce5cdb0970ba5f1.tar.xz olio-uboot-2014.01-41ef372c1a2d344621c74aa4bce5cdb0970ba5f1.zip | |
common: Use new numeric setenv functions
Use setenv_ulong(), setenv_hex() and setenv_addr() in common/
Signed-off-by: Simon Glass <sjg@chromium.org>
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 5a042951d..7a38e9450 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;  } |