Re: [PATCH 1/4] pylibfdt: add Property.as_stringlist()

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



On Sat, Dec 25, 2021 at 02:25:55PM +0100, Luca Weiss wrote:
> Add a new method for decoding a string list property, useful for e.g.
> the "reg-names" property.
> 
> Also add a test for the new method.
> 
> Signed-off-by: Luca Weiss <luca@xxxxxxxxx>

Applied, thanks.

> ---
>  pylibfdt/libfdt.i       | 7 +++++++
>  tests/pylibfdt_tests.py | 8 ++++++++
>  2 files changed, 15 insertions(+)
> 
> diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
> index 9ccc57b..c81b504 100644
> --- a/pylibfdt/libfdt.i
> +++ b/pylibfdt/libfdt.i
> @@ -724,6 +724,13 @@ class Property(bytearray):
>              raise ValueError('Property contains embedded nul characters')
>          return self[:-1].decode('utf-8')
>  
> +    def as_stringlist(self):
> +        """Unicode is supported by decoding from UTF-8"""
> +        if self[-1] != 0:
> +            raise ValueError('Property lacks nul termination')
> +        parts = self[:-1].split(b'\x00')
> +        return list(map(lambda x: x.decode('utf-8'), parts))
> +
>  
>  class FdtSw(FdtRo):
>      """Software interface to create a device tree from scratch
> diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
> index 64b5bd1..7e3cc4c 100644
> --- a/tests/pylibfdt_tests.py
> +++ b/tests/pylibfdt_tests.py
> @@ -382,6 +382,14 @@ class PyLibfdtBasicTests(unittest.TestCase):
>                            self.get_prop("prop-uint64").as_uint64())
>          self.assertEqual(-2, self.get_prop("prop-int64").as_int64())
>  
> +    def testGetStringlistProperties(self):
> +        """Test that we can access properties as string list"""
> +        node = self.fdt.path_offset('/subnode@1/subsubnode')
> +        self.assertEqual(["subsubnode1", "subsubnode"],
> +                         self.fdt.getprop(node, "compatible").as_stringlist())
> +        self.assertEqual(["this is a placeholder string", "string2"],
> +                         self.fdt.getprop(node, "placeholder").as_stringlist())
> +
>      def testReserveMap(self):
>          """Test that we can access the memory reserve map"""
>          self.assertEqual(2, self.fdt.num_mem_rsv())

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[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