public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Jerry Van Baren <gvb.uboot@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] cmd_fdt.c: fix parse of byte streams and strings
Date: Thu, 10 Sep 2009 20:23:27 -0400	[thread overview]
Message-ID: <4AA9987F.60608@gmail.com> (raw)
In-Reply-To: <m3ws46fpfo.fsf@bitsko.slc.ut.us>

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 <ken@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 /ethernet at f00 interrupts < 33 2 34 2 36 2 >
 > fdt p /ethernet at f00
ethernet at f00 {
     interrupts = <0x21 0x2 0x22 0x2 0x24 0x2>;
};
-----------------------------------------------------------------------

If understand Andy's changes correctly, what use to be
   fdt set /ethernet at f00 interrupts "<33 2 34 2 36 2>"
is now
   fdt set /ethernet at f00 interrupts < 33 2 34 2 36 2 >

and you carried this forward to handle byte streams:
   fdt set /ethernet at f00 interrupts "[33 2 34 2 36 2]"
becomes
   fdt set /ethernet at f00 interrupts [ 33 2 34 2 36 2 ]
and
   fdt set /ethernet at 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 /ethernet at 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;
>  }

  reply	other threads:[~2009-09-11  0:23 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-10 21:41 [U-Boot] [PATCH] cmd_fdt.c: fix parse of byte streams and strings Ken MacLeod
2009-09-11  0:23 ` Jerry Van Baren [this message]
2009-09-11 16:16   ` Scott Wood
2009-09-11 16:30     ` Jerry Van Baren
2009-09-11 16:39       ` Scott Wood
2009-09-11 16:45         ` Andy Fleming
2009-09-11 16:51           ` Jerry Van Baren
2009-09-11 17:50       ` Ken MacLeod
2009-09-11 17:56         ` Scott Wood
2009-09-11 19:35         ` Jerry Van Baren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AA9987F.60608@gmail.com \
    --to=gvb.uboot@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox