[U-Boot] [PATCH] cmd_fdt.c: fix parse of byte streams and strings

Ken MacLeod ken at bitsko.slc.ut.us
Thu Sep 10 23:41:15 CEST 2009


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 at bitsko.slc.ut.us>
---
 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;
 }
-- 
1.5.4.7



More information about the U-Boot mailing list