On 6/22/21 3:25 PM, Simon Glass wrote:
> Hi Roland,
>
> On Tue, 22 Jun 2021 at 07:51, <roland.gaudig-...@weidmueller.com> wrote:
>>
>> From: Roland Gaudig <roland.gau...@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.gau...@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
>>
>
> This seems reasonable to me.
>
> I have been thinking of introducing a prefix for decimal, perhaps
> 0m123 ? ('m' for deciMal).

Perhaps 0d123? Though I would prefer to remove many of the implicit
assumptions of hex input.

--Sean

>
> Can you please add a test for this in test//cmd/setexpr.c and also,
> how about adding something in doc/usage?
>
> Regards,
> Simon
>

Reply via email to