[Libguestfs] [PATCH] hivex: python: value_value no longer generates Unicode strings

Richard W.M. Jones rjones at redhat.com
Mon Feb 3 20:04:53 UTC 2014


On Mon, Feb 03, 2014 at 08:11:35PM +0100, Hilko Bengen wrote:
> This fixes Github issue #2 reported by "kupiakos".
> 
> <https://github.com/libguestfs/hivex/issues/2>

Thanks for fixing this.

To the reporter: It's the first time I've seen this bug report.
Github doesn't seem to generate any message when an issue is filed (or
if it does, it went to a spam folder somewhere) and you should use
https://bugzilla.redhat.com for bug reports for hivex/libguestfs.

>  generator/generator.ml   |  2 +-
>  python/t/210-setvalue.py | 26 +++++++++++++++++---------
>  2 files changed, 18 insertions(+), 10 deletions(-)
> 
> diff --git a/generator/generator.ml b/generator/generator.ml
> index 908c5f3..02aaf12 100755
> --- a/generator/generator.ml
> +++ b/generator/generator.ml
> @@ -2981,7 +2981,7 @@ put_val_type (char *val, size_t len, hive_type t)
>  {
>    PyObject *r = PyTuple_New (2);
>    PyTuple_SetItem (r, 0, PyLong_FromLong ((long) t));
> -  PyTuple_SetItem (r, 1, PyUnicode_DecodeUTF8 (val, len, NULL));
> +  PyTuple_SetItem (r, 1, PyBytes_FromStringAndSize (val, len));
>    return r;
>  }
>  
> diff --git a/python/t/210-setvalue.py b/python/t/210-setvalue.py
> index 2ee7ac5..8e7ed5c 100644
> --- a/python/t/210-setvalue.py
> +++ b/python/t/210-setvalue.py
> @@ -19,6 +19,14 @@ import sys
>  import os
>  import hivex
>  
> +if sys.version >= '3':
> +    import codecs
> +    def b(x):
> +        return codecs.encode(x)
> +else:
> +    def b(x):
> +        return x
> +
>  srcdir = os.environ["srcdir"]
>  if not srcdir:
>      srcdir = "."
> @@ -32,27 +40,27 @@ assert root
>  
>  h.node_add_child (root, "B")
>  
> -b = h.node_get_child (root, "B")
> -assert b
> +B = h.node_get_child (root, "B")
> +assert B
>  
>  values = [
>      { "key": "Key1", "t": 3, "value": "ABC" },
>      { "key": "Key2", "t": 3, "value": "DEF" }
>  ]
> -h.node_set_values (b, values)
> +h.node_set_values (B, values)
>  
>  value1 = { "key": "Key3", "t": 3, "value": "GHI" }
> -h.node_set_value (b, value1)
> +h.node_set_value (B, value1)
>  
>  value1 = { "key": "Key1", "t": 3, "value": "JKL" }
> -h.node_set_value (b, value1)
> +h.node_set_value (B, value1)
>  
> -val = h.node_get_value (b, "Key1")
> +val = h.node_get_value (B, "Key1")
>  t_data = h.value_value (val)
>  assert t_data[0] == 3
> -assert t_data[1] == "JKL"
> +assert t_data[1] == b("JKL")
>  
> -val = h.node_get_value (b, "Key3")
> +val = h.node_get_value (B, "Key3")
>  t_data = h.value_value (val)
>  assert t_data[0] == 3
> -assert t_data[1] == "GHI"
> +assert t_data[1] == b("GHI")

ACK.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list