summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pylibfdt/libfdt.i8
-rw-r--r--tests/pylibfdt_tests.py1
2 files changed, 5 insertions, 4 deletions
diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
index 987f7b9..2361e22 100644
--- a/pylibfdt/libfdt.i
+++ b/pylibfdt/libfdt.i
@@ -443,11 +443,12 @@ class FdtRo(object):
"""
return fdt_get_alias(self._fdt, name)
- def get_path(self, nodeoffset, quiet=()):
+ def get_path(self, nodeoffset, size_hint=1024, quiet=()):
"""Get the full path of a node
Args:
nodeoffset: Node offset to check
+ size_hint: Hint for size of returned string
Returns:
Full path to the node
@@ -455,11 +456,10 @@ class FdtRo(object):
Raises:
FdtException if an error occurs
"""
- size = 1024
while True:
- ret, path = fdt_get_path(self._fdt, nodeoffset, size)
+ ret, path = fdt_get_path(self._fdt, nodeoffset, size_hint)
if ret == -NOSPACE:
- size = size * 2
+ size_hint *= 2
continue
err = check_err(ret, quiet)
if err:
diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
index 68d6aaa..34c2764 100644
--- a/tests/pylibfdt_tests.py
+++ b/tests/pylibfdt_tests.py
@@ -354,6 +354,7 @@ class PyLibfdtBasicTests(unittest.TestCase):
node2 = self.fdt.path_offset('/subnode@1/subsubnode')
self.assertEqual("/subnode@1", self.fdt.get_path(node))
self.assertEqual("/subnode@1/subsubnode", self.fdt.get_path(node2))
+ self.assertEqual("/subnode@1/subsubnode", self.fdt.get_path(node2, size_hint=1))
with self.assertRaises(FdtException) as e:
self.fdt.get_path(-1)