Hi Ken, Ken MacLeod wrote: > Commit 4abd844d8e extended the fdt command parser to handle property > strings which are split across multiple arguments but it was broken for > byte streams and strings. This patch fixes those. > > Signed-off-by: Ken MacLeod <k...@bitsko.slc.ut.us>
Thanks for the patch. Andy's patch 4abd844d8e says... ----------------------------------------------------------------------- While I was in there, I extended the fdt command parser to handle property strings which are split across multiple arguments: > fdt set /ether...@f00 interrupts < 33 2 34 2 36 2 > > fdt p /ether...@f00 ether...@f00 { interrupts = <0x21 0x2 0x22 0x2 0x24 0x2>; }; ----------------------------------------------------------------------- If understand Andy's changes correctly, what use to be fdt set /ether...@f00 interrupts "<33 2 34 2 36 2>" is now fdt set /ether...@f00 interrupts < 33 2 34 2 36 2 > and you carried this forward to handle byte streams: fdt set /ether...@f00 interrupts "[33 2 34 2 36 2]" becomes fdt set /ether...@f00 interrupts [ 33 2 34 2 36 2 ] and fdt set /ether...@f00 interrupts "this is a string" can now handle multiple strings (words) by concatenating them with spaces (quoted strings still work the same as before because of hush's argument parsing) fdt set /ether...@f00 interrupts this is a string Best regards, gvb > --- > common/cmd_fdt.c | 11 +++++++++-- > 1 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c > index 8683772..f0a8f0e 100644 > --- a/common/cmd_fdt.c > +++ b/common/cmd_fdt.c > @@ -580,7 +580,7 @@ static int fdt_parse_prop(char **newval, int count, char > *data, int *len) > *len = *len + 1; > while (*newp == ' ') > newp++; > - if (*newp != '\0') > + if (*newp == '\0') > newp = newval[++stridx]; > } > if (*newp != ']') { > @@ -593,10 +593,17 @@ static int fdt_parse_prop(char **newval, int count, > char *data, int *len) > * convenience (including the terminating '\0'). > */ > while (stridx < count) { > - *len = strlen(newp) + 1; > + size_t length = strlen(newp); > strcpy(data, newp); > + data += length; > + *len += length; > newp = newval[++stridx]; > + if (stridx < count) { > + *data++ = ' '; > + *len += 1; > + } > } > + *len += 1; > } > return 0; > } _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot