pylibfdt: Support setting the name of a node

Add a method to call fdt_set_name().

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Simon Glass 2018-06-13 21:44:44 -06:00 committed by David Gibson
parent 2f0d07e678
commit b770f3d1c1
2 changed files with 32 additions and 0 deletions

View file

@ -535,6 +535,23 @@ class Fdt:
"""
return check_err(fdt_parent_offset(self._fdt, nodeoffset), quiet)
def set_name(self, nodeoffset, name, quiet=()):
"""Set the name of a node
Args:
nodeoffset: Node offset of node to update
name: New node name (string without \0)
Returns:
Error code, or 0 if OK
Raises:
FdtException if no parent found or other error occurs
"""
if chr(0) in name:
raise ValueError('Property contains embedded nul characters')
return check_err(fdt_set_name(self._fdt, nodeoffset, name), quiet)
def setprop(self, nodeoffset, prop_name, val, quiet=()):
"""Set the value of a property

View file

@ -465,6 +465,21 @@ class PyLibfdtTests(unittest.TestCase):
self.assertEquals(TEST_STRING_3,
self.fdt.getprop(node, prop).as_str())
def testSetName(self):
"""Test that we can update a node name"""
node = self.fdt.path_offset('/subnode@1')
old_val = self.fdt.get_name(node)
self.fdt.set_name(node, 'test')
self.assertEquals('test', self.fdt.get_name(node))
with self.assertRaises(ValueError) as e:
self.fdt.set_name(node, 'some\0name')
self.assertIn('embedded nul', str(e.exception))
with self.assertRaises(ValueError) as e:
self.fdt.set_name(node, 'name\0')
self.assertIn('embedded nul', str(e.exception))
if __name__ == "__main__":
unittest.main()