[PATCH] cmd: setexpr: add dec operation for converting variable to decimal
roland.gaudig-oss at weidmueller.com
roland.gaudig-oss at weidmueller.com
Thu Jun 17 14:26:44 CEST 2021
From: Roland Gaudig <roland.gaudig at weidmueller.com>
This patch extends the setexpr command with a dec operator to
convert an input value to decimal.
Signed-off-by: Roland Gaudig <roland.gaudig at weidmueller.com>
---
cmd/setexpr.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/cmd/setexpr.c b/cmd/setexpr.c
index e828be3970..2d4bee2182 100644
--- a/cmd/setexpr.c
+++ b/cmd/setexpr.c
@@ -370,15 +370,16 @@ static int do_setexpr(struct cmd_tbl *cmdtp, int flag, int argc,
int w;
/*
- * We take 3, 5, or 6 arguments:
+ * We take 3, 4, 5, or 6 arguments:
* 3 : setexpr name value
+ * 4 : setexpr name dec value
* 5 : setexpr name val1 op val2
* setexpr name [g]sub r s
* 6 : setexpr name [g]sub r s t
*/
/* > 6 already tested by max command args */
- if ((argc < 3) || (argc == 4))
+ if (argc < 3)
return CMD_RET_USAGE;
w = cmd_get_data_size(argv[0], 4);
@@ -398,6 +399,13 @@ static int do_setexpr(struct cmd_tbl *cmdtp, int flag, int argc,
return ret;
}
+ /* hexadecimal to decimal conversion: "setexpr name dec value" */
+ if (argc == 4 && (strcmp(argv[2], "dec") == 0)) {
+ w = cmd_get_data_size(argv[3], 4);
+ a = get_arg(argv[3], w);
+ return env_set_ulong(argv[1], a);
+ }
+
/* 5 or 6 args (6 args only with [g]sub) */
#ifdef CONFIG_REGEX
/*
@@ -515,4 +523,8 @@ U_BOOT_CMD(
"setexpr name sub r s [t]\n"
" - Just like gsub(), but replace only the first matching substring"
#endif
+ "\n"
+ "setexpr name dec [*]value\n"
+ " - set environment variable 'name' to the result of the decimal\n"
+ " conversion of [*]value.\n"
);
--
2.25.1
More information about the U-Boot
mailing list