[PATCH v3 2/4] pylibfdt: Support setting the name of a node

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Add a method to call fdt_set_name().

Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>
---

Changes in v3:
- Add one more test (for trailing \0)
- Fix the nul check and clarify the 'name' argument type with a comment

Changes in v2:
- Check for an invalid C string (embedded nul)

 pylibfdt/libfdt.i       | 17 +++++++++++++++++
 tests/pylibfdt_tests.py | 15 +++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
index 8ae6340..93694da 100644
--- a/pylibfdt/libfdt.i
+++ b/pylibfdt/libfdt.i
@@ -528,6 +528,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
 
diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
index 51458ad..833aaa7 100644
--- a/tests/pylibfdt_tests.py
+++ b/tests/pylibfdt_tests.py
@@ -464,6 +464,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()
-- 
2.18.0.rc1.244.gcf134e6275-goog

--
To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux