[PATCH v9 3/7] env: Allow U-Boot scripts to be placed in a .env file

Simon Glass sjg at chromium.org
Thu Oct 21 17:59:38 CEST 2021


Hi Marek,

On Thu, 21 Oct 2021 at 07:28, Marek Behún <marek.behun at nic.cz> wrote:
>
> On Thu, 21 Oct 2021 15:25:37 +0200
> Marek Behún <marek.behun at nic.cz> wrote:
>
> > Hello,
> >
> > On Thu, 21 Oct 2021 15:06:51 +0200
> > Wolfgang Denk <wd at denx.de> wrote:
> >
> > > I confirm that '+=' looks better.  But '+=" is technically broken.
> >
> > a bit of my opinion:
> > I think =+ will confuse far more people than + as last character of var
> > name working weirdly. But I also think that + should be supported as
> > last character. Therefore I propose backslash escaping in variable name,
> > i.e.
> >   var+=value
> > appends value to var, while
> >   var\+=value
> > sets variable with name "var+"

My first preference is to disallow + at the end of an end var. Perhaps
we can start printing a warning if people do it, for a few releases.

My distance second preference is what Marek has here, using a
backslash to escape the + character.

As for =+ ...while I can see how people might parse it (we are setting
the var equal to what it has with an appending string) I think it is a
terrible idea as it is just not what people expect. Also, putting the
+ after the = places (similarly unlikely) restrictions on the
expression.

The current format is basically the same as 'print'. So if I can't
have the first preference, we could ensure that it prints a \ in the
case that the var ends with +

> >
> > Marek
>
> Also, I think that it would be better if spaces and tabs were allowed
> to indent the .env file, i.e.
>
>         var_a   =       3
>         var_bcd =       7
>
> should set "var_a" to "3", "var_bcd" to "7".
>
> If special character are needed in either name or value, they could be
> escaped and/or quoted.

They are allowed in the value but are reduced to a single space in the
front. We need this for multi-line strings (but I'm a bit worried
about it).

We could update it to skip any leading space after the = I think.

I don't like spaces before the = though. It doesn't match the 'print'
output (which has no space) and it is confusing:

fred=echo something; if [
a == b ]; then
fi

We may well have things like this if we try automatic conversion (I
haven't looked though).

I think we need strict rules so it is easy for people to get exactly
the env they want.

Regards,
Simon


More information about the U-Boot mailing list