[PATCH] gpt: allow spaces in partition list
Sam Protsenko
semen.protsenko at linaro.org
Thu Jul 11 01:23:35 CEST 2024
On Tue, Jul 9, 2024 at 9:00 PM Sam Protsenko <semen.protsenko at linaro.org> wrote:
>
> On Thu, Jun 27, 2024 at 6:29 AM Mikhail Kshevetskiy
> <mikhail.kshevetskiy at iopsys.eu> wrote:
> >
> > This allows spliting partition list to several lines in environment file
> >
> > ex:
> > --------------------
> > gpt_partition_list=
> > name=boot1,size=5MiB,start=0x100000;
> > name=boot2,size=5MiB;
> > name=rootfs1,size=70MiB;
> > name=rootfs2,size=70MiB;
> > name=overlay1,size=20MiB;
> > name=overlay2,size=20MiB;
> > name=art,size=4MiB;
> >
> > Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy at iopsys.eu>
> > ---
>
> Feel free to add:
>
> Reviewed-by: Sam Protsenko <semen.protsenko at linaro.org>
> Tested-by: Sam Protsenko <semen.protsenko at linaro.org>
>
> With this patch the next command succeeds, when having $partitions
> described in multi-line variable in .env file:
>
> => gpt verify mmc 0 "$partitions"
>
> I wonder if it makes sense to also change cmd_gen_envp command in
> Makefile to avoid adding spaces in place of newlines, in the first
> place? It would allow us to specify unbroken multi-line variables in
> .env, though I'm not sure if anyone actually relies on that behavior
> in their .env files.
>
Tom, can you please apply this one? I think it actually fixes this existing env:
board/sifive/unmatched/unmatched.env
which has multi-line $partitions definition in it. I'd also want to
keep $partitions in .env file (as opposed to .h) for E850-96 board in
my new series, which requires this patch to be applied as well.
Thanks!
> > cmd/gpt.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/cmd/gpt.c b/cmd/gpt.c
> > index 7aaf1889a5a..2b29ab98ccc 100644
> > --- a/cmd/gpt.c
> > +++ b/cmd/gpt.c
> > @@ -117,6 +117,7 @@ static char *extract_val(const char *str, const char *key)
> > k = strsep(&v, "=");
> > if (!k)
> > break;
> > + k += strspn(k, " \t");
> > if (strcmp(k, key) == 0) {
> > new = strdup(v);
> > break;
> > @@ -151,6 +152,7 @@ static bool found_key(const char *str, const char *key)
> > k = strsep(&s, ",");
> > if (!k)
> > break;
> > + k += strspn(k, " \t");
> > if (strcmp(k, key) == 0) {
> > result = true;
> > break;
> > --
> > 2.43.0
> >
More information about the U-Boot
mailing list