mirror of
https://xff.cz/git/u-boot/
synced 2025-09-30 15:01:27 +02:00
dtoc: Tidy up implementation of AddStringList()
Refactor this to avoid a loop. Also add a test for an empty string. Signed-off-by: Simon Glass <sjg@chromium.org> Suggested-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> Reviewed-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
This commit is contained in:
@@ -516,9 +516,7 @@ class Node:
|
|||||||
Returns:
|
Returns:
|
||||||
Prop added
|
Prop added
|
||||||
"""
|
"""
|
||||||
out = b''
|
out = b'\0'.join(bytes(s, 'utf-8') for s in val) + b'\0' if val else b''
|
||||||
for string in val:
|
|
||||||
out += bytes(string, 'utf-8') + b'\0'
|
|
||||||
return self.AddData(prop_name, out)
|
return self.AddData(prop_name, out)
|
||||||
|
|
||||||
def AddInt(self, prop_name, val):
|
def AddInt(self, prop_name, val):
|
||||||
|
@@ -158,6 +158,8 @@ def GetString(node, propname, default=None):
|
|||||||
if not prop:
|
if not prop:
|
||||||
return default
|
return default
|
||||||
value = prop.value
|
value = prop.value
|
||||||
|
if not prop.bytes:
|
||||||
|
return ''
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
raise ValueError("Node '%s' property '%s' has list value: expecting "
|
raise ValueError("Node '%s' property '%s' has list value: expecting "
|
||||||
"a single string" % (node.name, propname))
|
"a single string" % (node.name, propname))
|
||||||
@@ -179,6 +181,8 @@ def GetStringList(node, propname, default=None):
|
|||||||
if not prop:
|
if not prop:
|
||||||
return default
|
return default
|
||||||
value = prop.value
|
value = prop.value
|
||||||
|
if not prop.bytes:
|
||||||
|
return []
|
||||||
if not isinstance(value, list):
|
if not isinstance(value, list):
|
||||||
strval = GetString(node, propname)
|
strval = GetString(node, propname)
|
||||||
return [strval]
|
return [strval]
|
||||||
|
@@ -550,6 +550,12 @@ class TestProp(unittest.TestCase):
|
|||||||
data = self.fdt.getprop(self.node.Offset(), 'stringlist')
|
data = self.fdt.getprop(self.node.Offset(), 'stringlist')
|
||||||
self.assertEqual(b'123\x00456\0', data)
|
self.assertEqual(b'123\x00456\0', data)
|
||||||
|
|
||||||
|
val = []
|
||||||
|
self.node.AddStringList('stringlist', val)
|
||||||
|
self.dtb.Sync(auto_resize=True)
|
||||||
|
data = self.fdt.getprop(self.node.Offset(), 'stringlist')
|
||||||
|
self.assertEqual(b'', data)
|
||||||
|
|
||||||
def test_delete_node(self):
|
def test_delete_node(self):
|
||||||
"""Test deleting a node"""
|
"""Test deleting a node"""
|
||||||
old_offset = self.fdt.path_offset('/spl-test')
|
old_offset = self.fdt.path_offset('/spl-test')
|
||||||
@@ -637,6 +643,7 @@ class TestFdtUtil(unittest.TestCase):
|
|||||||
self.assertEqual('message', fdt_util.GetString(self.node, 'stringval'))
|
self.assertEqual('message', fdt_util.GetString(self.node, 'stringval'))
|
||||||
self.assertEqual('test', fdt_util.GetString(self.node, 'missing',
|
self.assertEqual('test', fdt_util.GetString(self.node, 'missing',
|
||||||
'test'))
|
'test'))
|
||||||
|
self.assertEqual('', fdt_util.GetString(self.node, 'boolval'))
|
||||||
|
|
||||||
with self.assertRaises(ValueError) as e:
|
with self.assertRaises(ValueError) as e:
|
||||||
self.assertEqual(3, fdt_util.GetString(self.node, 'stringarray'))
|
self.assertEqual(3, fdt_util.GetString(self.node, 'stringarray'))
|
||||||
@@ -651,6 +658,7 @@ class TestFdtUtil(unittest.TestCase):
|
|||||||
fdt_util.GetStringList(self.node, 'stringarray'))
|
fdt_util.GetStringList(self.node, 'stringarray'))
|
||||||
self.assertEqual(['test'],
|
self.assertEqual(['test'],
|
||||||
fdt_util.GetStringList(self.node, 'missing', ['test']))
|
fdt_util.GetStringList(self.node, 'missing', ['test']))
|
||||||
|
self.assertEqual([], fdt_util.GetStringList(self.node, 'boolval'))
|
||||||
|
|
||||||
def testGetArgs(self):
|
def testGetArgs(self):
|
||||||
node = self.dtb.GetNode('/orig-node')
|
node = self.dtb.GetNode('/orig-node')
|
||||||
|
Reference in New Issue
Block a user