From af7eca24a78b1419656d618463f1eabe297fdb2f Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Mon, 3 Feb 2025 16:10:29 +0100 Subject: cmd/setexpr: support concatenation of direct strings The setexpr.s command allows to concatenate two strings. According to the description in doc/usage/cmd/setexpr.rst the parameters value1 and value2 can be either direct values or pointers to a memory location holding the values. Unfortunately `setexpr.s + ` fails if any of the values is a direct value. $? is set to false. * Add support for direct values in setexpr.s. * Correct the unit test for "setexpr.s fred 0". * Add a new unit test for "setexpr.s fred '1' + '3'" giving '13'. Signed-off-by: Heinrich Schuchardt --- test/cmd/setexpr.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'test/cmd/setexpr.c') diff --git a/test/cmd/setexpr.c b/test/cmd/setexpr.c index 650fbc8ebee..5e9b577fe36 100644 --- a/test/cmd/setexpr.c +++ b/test/cmd/setexpr.c @@ -303,7 +303,8 @@ static int setexpr_test_str(struct unit_test_state *uts) memset(buf, '\xff', BUF_SIZE); ut_assertok(env_set("fred", "x")); - ut_asserteq(1, run_command("setexpr.s fred 0", 0)); + ut_asserteq(0, run_command("setexpr.s fred 0", 0)); + ut_asserteq_str("0", env_get("fred")); strcpy(buf, "hello"); ut_assertok(env_set("fred", "12345")); @@ -321,6 +322,10 @@ static int setexpr_test_str_oper(struct unit_test_state *uts) { char *buf; + /* Test concatenation of strings */ + ut_assertok(run_command("setexpr.s fred '1' + '3'", 0)); + ut_asserteq_str("13", env_get("fred")); + buf = map_sysmem(0, BUF_SIZE); memset(buf, '\xff', BUF_SIZE); strcpy(buf, "hello"); -- cgit v1.2.3