Browse Source

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>
main
Simon Glass 7 years ago committed by David Gibson
parent
commit
b770f3d1c1
  1. 17
      pylibfdt/libfdt.i
  2. 15
      tests/pylibfdt_tests.py

17
pylibfdt/libfdt.i

@ -535,6 +535,23 @@ class Fdt: @@ -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


15
tests/pylibfdt_tests.py

@ -465,6 +465,21 @@ class PyLibfdtTests(unittest.TestCase): @@ -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()

Loading…
Cancel
Save