[PATCH] common: cli_hush: Restore clear local variable support
Stefan Herbrechtsmeier
stefan.herbrechtsmeier-oss at weidmueller.com
Mon Apr 3 11:35:56 CEST 2023
Hi Simon,
Am 01.04.2023 um 08:31 schrieb Simon Glass:
> Hi Stefan,
>
> On Sat, 1 Apr 2023 at 03:43, Stefan Herbrechtsmeier
> <stefan.herbrechtsmeier-oss at weidmueller.com> wrote:
>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>
>> The u-boot hush shell doesn’t support the unset command to clear a
>> variable and therefore an empty value ("c=") should be a valid value
>> for the set_local_var function to clear the variable. This partial
>> reverts commit aa722529635c ("common: cli_hush: avoid dead code") and
>> only checks for a `=` in the string. Additionally explicit call the
>> unset_local_var function to remove the variable if the value is empty.
>>
>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>
>> ---
>>
>> common/cli_hush.c | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/common/cli_hush.c b/common/cli_hush.c
>> index 1ad7a509df..c3f7dd12a0 100644
>> --- a/common/cli_hush.c
>> +++ b/common/cli_hush.c
>> @@ -2171,12 +2171,18 @@ int set_local_var(const char *s, int flg_export)
>> * NAME=VALUE format. So the first order of business is to
>> * split 's' on the '=' into 'name' and 'value' */
>> value = strchr(name, '=');
>> - if (value == NULL || *(value + 1) == 0) {
>> + if (value == NULL) {
> if (!value)
I reuse the existing style of the file. Should I always use the kernel /
u-boot style for changes?
>> free(name);
>> return -1;
>> }
>> *value++ = 0;
>>
>> + if (*value == 0) {
> if (!*value)
>
>> + unset_local_var(name);
>> + free(name);
>> + return 0;
>> + }
>> +
>> for(cur = top_vars; cur; cur = cur->next) {
>> if(strcmp(cur->name, name)==0)
>> break;
>> --
>> 2.30.2
> I think this should have a test, e.g. in
> test/py/tests/test_hush_if_test.py or perhaps a C test?
I will extend the python test.
Regards
Stefan
________________________________
Kommanditgesellschaft - Sitz: Detmold - Amtsgericht Lemgo HRA 2790 -
Komplementärin: Weidmüller Interface Führungsgesellschaft mbH -
Sitz: Detmold - Amtsgericht Lemgo HRB 3924;
Geschäftsführer: Dr. Timo Berger, Volker Bibelhausen, Dr. Sebastian Durst, André Sombecki;
USt-ID-Nr. DE124599660
More information about the U-Boot
mailing list