python: Explicitly use byte strings
authorMathieu Bridon <bochecha@daitauha.fr>
Sun, 17 Jun 2018 12:40:31 +0000 (14:40 +0200)
committerEric Engestrom <eric.engestrom@intel.com>
Wed, 1 Aug 2018 13:26:19 +0000 (14:26 +0100)
In both Python 2 and 3, zlib.Compress.compress() takes a byte string,
and returns a byte string as well.

In Python 2, the script was working because:

1. string literalls were byte strings;
2. opening a file in unicode mode, reading from it, then passing the
   unicode string to compress() would automatically encode to a byte
   string;

On Python 3, the above two points are not valid any more, so:

1. zlib.Compress.compress() refuses the passed unicode string;
2. compressed_data, defined as an empty unicode string literal, can't be
   concatenated with the byte string returned by compress();

This commit fixes this by explicitly using byte strings where
appropriate, so that the script works on both Python 2 and 3.

Signed-off-by: Mathieu Bridon <bochecha@daitauha.fr>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
src/intel/genxml/gen_zipped_file.py

index 1d6bd56824689acdaef282973e8095f443fb7879..616409183f023e30578a2b28e17582f375227b52 100644 (file)
@@ -42,10 +42,10 @@ def main():
     print("} genxml_files_table[] = {")
 
     xml_offset = 0
-    compressed_data = ''
+    compressed_data = b''
     for i in range(1, len(sys.argv)):
         filename = sys.argv[i]
-        xml = open(filename).read()
+        xml = open(filename, "rb").read()
         xml_length = len(xml)
         root = et.fromstring(xml)