python/samba/gp_parse: PY3 open file non-binary mode for write_binary
authorNoel Power <noel.power@suse.com>
Wed, 5 Sep 2018 11:52:30 +0000 (12:52 +0100)
committerNoel Power <npower@samba.org>
Mon, 5 Nov 2018 19:05:23 +0000 (20:05 +0100)
Although this is unintuitive it's because we are writing unicode
not bytes (both in PY2 & PY3). using the 'b' mode causes an error in
PY3.

In PY3 we can define the encoding, but not in PY2.

Signed-off-by: Noel Power <noel.power@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
python/samba/gp_parse/gp_csv.py

index cd30ef2bc0096114938deefc0b619d675e096482..280e83175dcb0824778a29f1718ceee7e457c8f7 100644 (file)
@@ -23,7 +23,7 @@ import io
 
 from io import BytesIO
 from xml.etree.ElementTree import Element, SubElement
-
+from samba.compat import PY3
 from samba.gp_parse import GPParser
 
 # [MS-GPAC] Group Policy Audit Configuration
@@ -93,11 +93,9 @@ class GPAuditCsvParser(GPParser):
                 self.lines.append(line)
 
     def write_binary(self, filename):
-        with open(filename, 'wb') as f:
-            # This should be using a unicode writer, but it seems to be in the
-            # right encoding at least by default.
-            #
-            # writer = UnicodeWriter(f, quoting=csv.QUOTE_MINIMAL)
+        from io import open
+        with open(filename, 'w', self.encoding) as f:
+            # In this case "binary" means "utf-8", so we let Python do that.
             writer = csv.writer(f, quoting=csv.QUOTE_MINIMAL)
             writer.writerow(self.header)
             for line in self.lines: