rpmbuild 6aa3dc9
From 9f080d4ed363f6a25874ae991806f30922a14671 Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 10:03:02 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 1/7] Fix prints - from statement to function
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 31 ++++++++++++++++---------------
rpmbuild 6aa3dc9
 1 file changed, 16 insertions(+), 15 deletions(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index e521d88..5da5bf4 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -5,6 +5,7 @@
rpmbuild 6aa3dc9
 #             - VBA: fixed infinite loop when output file already exists
rpmbuild 6aa3dc9
 #             - improved logging output, set default level to INFO
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
+from __future__ import print_function
rpmbuild 6aa3dc9
 import sys
rpmbuild 6aa3dc9
 from struct import unpack
rpmbuild 6aa3dc9
 from optparse import OptionParser
rpmbuild 6aa3dc9
@@ -268,7 +269,7 @@ def read_chain(self, sector_start):
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     def print_fat_sectors(self):
rpmbuild 6aa3dc9
         for sector in self.fat_sectors:
rpmbuild 6aa3dc9
-            print '{0:08X}'.format(sector)
rpmbuild 6aa3dc9
+            print('{0:08X}'.format(sector))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     def get_stream(self, index):
rpmbuild 6aa3dc9
         d = self.directory[index]
rpmbuild 6aa3dc9
@@ -315,7 +316,7 @@ def __init__(self, data, parser_options=None):
rpmbuild 6aa3dc9
         self._sectFat = self.header[18:] # sects of first 109 FAT sectors
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     def pretty_print(self):
rpmbuild 6aa3dc9
-        print """HEADER DUMP
rpmbuild 6aa3dc9
+        print("""HEADER DUMP
rpmbuild 6aa3dc9
 _abSig              = {0}
rpmbuild 6aa3dc9
 _clid               = {1}
rpmbuild 6aa3dc9
 _uMinorVersion      = {2}
rpmbuild 6aa3dc9
@@ -353,11 +354,11 @@ def pretty_print(self):
rpmbuild 6aa3dc9
         '{0:08X}'.format(self._sectMiniFatStart),
rpmbuild 6aa3dc9
         '{0:08X}'.format(self._csectMiniFat),
rpmbuild 6aa3dc9
         '{0:08X}'.format(self._sectDifStart),
rpmbuild 6aa3dc9
-        '{0:08X}'.format(self._csectDif))
rpmbuild 6aa3dc9
+        '{0:08X}'.format(self._csectDif)))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
         for fat in self._sectFat:
rpmbuild 6aa3dc9
             if fat != FREESECT:
rpmbuild 6aa3dc9
-                print '_sectFat            = {0:08X}'.format(fat)
rpmbuild 6aa3dc9
+                print('_sectFat            = {0:08X}'.format(fat))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
 STGTY_INVALID = 0
rpmbuild 6aa3dc9
 STGTY_STORAGE = 1
rpmbuild 6aa3dc9
@@ -416,7 +417,7 @@ def __init__(self, data, index):
rpmbuild 6aa3dc9
         # last two bytes are padding
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     def pretty_print(self):
rpmbuild 6aa3dc9
-        print """
rpmbuild 6aa3dc9
+        print("""
rpmbuild 6aa3dc9
 _ab                 = {0}
rpmbuild 6aa3dc9
 _cb                 = {1}
rpmbuild 6aa3dc9
 _mse                = {2}
rpmbuild 6aa3dc9
@@ -446,7 +447,7 @@ def pretty_print(self):
rpmbuild 6aa3dc9
         '{0}'.format(self._time[1]),
rpmbuild 6aa3dc9
         '{0:08X}'.format(self._sectStart),
rpmbuild 6aa3dc9
         '{0:08X} ({0} bytes)'.format(self._ulSize),
rpmbuild 6aa3dc9
-        '{0:04X}'.format(self._dptPropType))
rpmbuild 6aa3dc9
+        '{0:04X}'.format(self._dptPropType)))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
 def _main():
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
@@ -561,22 +562,22 @@ def _main():
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_directory:
rpmbuild 6aa3dc9
         for x in xrange(0, len(ofdoc.directory)):
rpmbuild 6aa3dc9
-            print "Directory Index {0:08X} ({0})".format(x)
rpmbuild 6aa3dc9
+            print("Directory Index {0:08X} ({0})".format(x))
rpmbuild 6aa3dc9
             ofdoc.directory[x].pretty_print()
rpmbuild 6aa3dc9
-            print
rpmbuild 6aa3dc9
+            print()
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_fat:
rpmbuild 6aa3dc9
         for sector in xrange(0, len(ofdoc.fat)):
rpmbuild 6aa3dc9
-            print '{0:08X}: {1}'.format(sector, fat_value_to_str(ofdoc.fat[sector]))
rpmbuild 6aa3dc9
+            print('{0:08X}: {1}'.format(sector, fat_value_to_str(ofdoc.fat[sector])))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_mini_fat:
rpmbuild 6aa3dc9
         for sector in xrange(0, len(ofdoc.minifat)):
rpmbuild 6aa3dc9
-            print '{0:08X}: {1}'.format(sector, fat_value_to_str(ofdoc.minifat[sector]))
rpmbuild 6aa3dc9
+            print('{0:08X}: {1}'.format(sector, fat_value_to_str(ofdoc.minifat[sector])))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_streams:
rpmbuild 6aa3dc9
         for d in ofdoc.directory:
rpmbuild 6aa3dc9
             if d._mse == STGTY_STREAM:
rpmbuild 6aa3dc9
-                print '{0}: {1}'.format(d.index, d.name)
rpmbuild 6aa3dc9
+                print('{0}: {1}'.format(d.index, d.name))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_expected_file_size:
rpmbuild 6aa3dc9
         expected_file_size = (len([x for x in ofdoc.fat if x != FREESECT]) * ofdoc.sector_size) + 512
rpmbuild 6aa3dc9
@@ -584,8 +585,8 @@ def _main():
rpmbuild 6aa3dc9
         size_diff = abs(expected_file_size - actual_file_size)
rpmbuild 6aa3dc9
         percent_diff = (float(size_diff) / float(expected_file_size)) * 100.0
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
-        print "expected file size {0} actual {1} difference {2} ({3:0.2f}%)".format(
rpmbuild 6aa3dc9
-            expected_file_size, actual_file_size, size_diff, percent_diff)
rpmbuild 6aa3dc9
+        print("expected file size {0} actual {1} difference {2} ({3:0.2f}%)".format(
rpmbuild 6aa3dc9
+            expected_file_size, actual_file_size, size_diff, percent_diff))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     #
rpmbuild 6aa3dc9
     # analysis options
rpmbuild 6aa3dc9
@@ -620,7 +621,7 @@ def _main():
rpmbuild 6aa3dc9
                     logging.warning('invalid FAT sector reference {0:08X}'.format(value))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_invalid_fat_count:
rpmbuild 6aa3dc9
-        print "invalid FAT sector references: {0}".format(invalid_fat_sectors)
rpmbuild 6aa3dc9
+        print("invalid FAT sector references: {0}".format(invalid_fat_sectors))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     invalid_fat_entries = 0
rpmbuild 6aa3dc9
     if options.check_fat or options.print_invalid_fat_count:
rpmbuild 6aa3dc9
@@ -634,7 +635,7 @@ def _main():
rpmbuild 6aa3dc9
                     logging.warning('invalid FAT sector {0:08X} value {1:08X}'.format(value, ptr))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.print_invalid_fat_count:
rpmbuild 6aa3dc9
-        print "invalid FAT entries: {0}".format(invalid_fat_entries)
rpmbuild 6aa3dc9
+        print("invalid FAT entries: {0}".format(invalid_fat_entries))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.check_orphaned_chains:
rpmbuild 6aa3dc9
         buffer = [False for fat in ofdoc.fat]
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
From b64db92d77d480f93a973b995fd63c964b16b6fb Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 10:47:57 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 2/7] Use BytesIO from compatible io module instead of StringIO
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 6 +++---
rpmbuild 6aa3dc9
 1 file changed, 3 insertions(+), 3 deletions(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index 5da5bf4..82dce4a 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -9,7 +9,7 @@
rpmbuild 6aa3dc9
 import sys
rpmbuild 6aa3dc9
 from struct import unpack
rpmbuild 6aa3dc9
 from optparse import OptionParser
rpmbuild 6aa3dc9
-from cStringIO import StringIO
rpmbuild 6aa3dc9
+from io import BytesIO
rpmbuild 6aa3dc9
 import logging
rpmbuild 6aa3dc9
 import re
rpmbuild 6aa3dc9
 import os
rpmbuild 6aa3dc9
@@ -218,7 +218,7 @@ def __init__(self, file, parser_options=None):
rpmbuild 6aa3dc9
             # chain in the Fat, with the beginning of the chain stored in the
rpmbuild 6aa3dc9
             # header.
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
-            data = StringIO(self.read_chain(self.header._sectMiniFatStart))
rpmbuild 6aa3dc9
+            data = BytesIO(self.read_chain(self.header._sectMiniFatStart))
rpmbuild 6aa3dc9
             while True:
rpmbuild 6aa3dc9
                 chunk = data.read(self.sector_size)
rpmbuild 6aa3dc9
                 if chunk == '':
rpmbuild 6aa3dc9
@@ -249,7 +249,7 @@ def __impl_read_chain(self, start, read_sector_f, read_fat_f):
rpmbuild 6aa3dc9
         """Returns the entire contents of a chain starting at the given sector."""
rpmbuild 6aa3dc9
         sector = start
rpmbuild 6aa3dc9
         check = [ sector ] # keep a list of sectors we've already read
rpmbuild 6aa3dc9
-        buffer = StringIO()
rpmbuild 6aa3dc9
+        buffer = BytesIO()
rpmbuild 6aa3dc9
         while sector != ENDOFCHAIN:
rpmbuild 6aa3dc9
             buffer.write(read_sector_f(sector))
rpmbuild 6aa3dc9
             next = read_fat_f(sector)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
From 032a0d058bc59d1c3bef5f0b68298720947ac2c5 Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 10:48:44 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 3/7] Different parsing bytes to name for Python 2/3
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 9 ++++++++-
rpmbuild 6aa3dc9
 1 file changed, 8 insertions(+), 1 deletion(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index 82dce4a..c9f1d10 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -28,6 +28,8 @@
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
 BINFILE_NAME = "/vbaProject.bin"
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
+PY3 = sys.version_info[0] == 3
rpmbuild 6aa3dc9
+
rpmbuild 6aa3dc9
 def fat_value_to_str(value):
rpmbuild 6aa3dc9
     if value == DIFSECT:
rpmbuild 6aa3dc9
         return '0xFFFFFFFC (DIF)'
rpmbuild 6aa3dc9
@@ -402,7 +404,12 @@ def __init__(self, data, index):
rpmbuild 6aa3dc9
         self._ab = self.directory[0]
rpmbuild 6aa3dc9
         self._cb = self.directory[1]
rpmbuild 6aa3dc9
         # convert wide chars into ASCII
rpmbuild 6aa3dc9
-        self.name = ''.join([x for x in self._ab[0:self._cb] if ord(x) != 0])
rpmbuild 6aa3dc9
+        if PY3:
rpmbuild 6aa3dc9
+            # In Python 3 we have numbers we need to convert to chars
rpmbuild 6aa3dc9
+            self.name = ''.join([chr(x) for x in self._ab[0:self._cb] if x != 0])
rpmbuild 6aa3dc9
+        else:
rpmbuild 6aa3dc9
+            # In Python 2 we have chars we need to convert to numbers to check them
rpmbuild 6aa3dc9
+            self.name = ''.join([x for x in self._ab[0:self._cb] if ord(x) != 0])
rpmbuild 6aa3dc9
         self._mse = self.directory[2]
rpmbuild 6aa3dc9
         self._bflags = self.directory[3]
rpmbuild 6aa3dc9
         self._sidLeftSib = self.directory[4]
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
From 6afb84b3237cf280bafd95b400e454a8484199be Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 10:49:57 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 4/7] Use floor division where we need integer as a result
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 6 +++---
rpmbuild 6aa3dc9
 1 file changed, 3 insertions(+), 3 deletions(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index c9f1d10..2d9aa90 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -196,14 +196,14 @@ def __init__(self, file, parser_options=None):
rpmbuild 6aa3dc9
             if len(data) != self.sector_size:
rpmbuild 6aa3dc9
                 logging.error('broken FAT (invalid sector size {0} != {1})'.format(len(data), self.sector_size))
rpmbuild 6aa3dc9
             else:
rpmbuild 6aa3dc9
-                for value in unpack('<{0}L'.format(self.sector_size / 4), data):
rpmbuild 6aa3dc9
+                for value in unpack('<{0}L'.format(self.sector_size // 4), data):
rpmbuild 6aa3dc9
                     self.fat.append(value)
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
         # get the list of directory sectors
rpmbuild 6aa3dc9
         self.directory = []
rpmbuild 6aa3dc9
         buffer = self.read_chain(self.header._sectDirStart)
rpmbuild 6aa3dc9
         directory_index = 0
rpmbuild 6aa3dc9
-        for chunk in unpack("128s" * (len(buffer) / 128), buffer):
rpmbuild 6aa3dc9
+        for chunk in unpack("128s" * (len(buffer) // 128), buffer):
rpmbuild 6aa3dc9
             self.directory.append(Directory(chunk, directory_index))
rpmbuild 6aa3dc9
             directory_index += 1
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
@@ -228,7 +228,7 @@ def __init__(self, file, parser_options=None):
rpmbuild 6aa3dc9
                 if len(chunk) != self.sector_size:
rpmbuild 6aa3dc9
                     logging.warning("encountered EOF while parsing minifat")
rpmbuild 6aa3dc9
                     continue
rpmbuild 6aa3dc9
-                for value in unpack('<{0}L'.format(self.sector_size / 4), chunk):
rpmbuild 6aa3dc9
+                for value in unpack('<{0}L'.format(self.sector_size // 4), chunk):
rpmbuild 6aa3dc9
                     self.minifat.append(value)
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     def read_sector(self, sector):
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
From ace8691eacba4dce0e6bf95292dab9f3a34396eb Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 10:50:34 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 5/7] chunk is '' in Python 2 and b'' in Python 3 so better is
rpmbuild 6aa3dc9
 to check its length
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 2 +-
rpmbuild 6aa3dc9
 1 file changed, 1 insertion(+), 1 deletion(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index 2d9aa90..fb1d07c 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -223,7 +223,7 @@ def __init__(self, file, parser_options=None):
rpmbuild 6aa3dc9
             data = BytesIO(self.read_chain(self.header._sectMiniFatStart))
rpmbuild 6aa3dc9
             while True:
rpmbuild 6aa3dc9
                 chunk = data.read(self.sector_size)
rpmbuild 6aa3dc9
-                if chunk == '':
rpmbuild 6aa3dc9
+                if len(chunk) == 0:
rpmbuild 6aa3dc9
                     break
rpmbuild 6aa3dc9
                 if len(chunk) != self.sector_size:
rpmbuild 6aa3dc9
                     logging.warning("encountered EOF while parsing minifat")
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
From 0a4c0189d7f6aefb09e4b7299ca0626a39a6d20b Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 10:57:35 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 6/7] Use compatible way for writing binary data to stdout
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 8 ++++----
rpmbuild 6aa3dc9
 1 file changed, 4 insertions(+), 4 deletions(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index fb1d07c..43d45ea 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -685,20 +685,20 @@ def _main():
rpmbuild 6aa3dc9
     # dump options
rpmbuild 6aa3dc9
     #
rpmbuild 6aa3dc9
     if options.dump_sector:
rpmbuild 6aa3dc9
-        sys.stdout.write(ofdoc.read_sector(options.dump_sector))
rpmbuild 6aa3dc9
+        os.write(sys.stdout.fileno(), ofdoc.read_sector(options.dump_sector))
rpmbuild 6aa3dc9
         sys.exit(0)
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.dump_ministream:
rpmbuild 6aa3dc9
-        sys.stdout.write(ofdoc.ministream)
rpmbuild 6aa3dc9
+        os.write(sys.stdout.fileno(), (ofdoc.ministream))
rpmbuild 6aa3dc9
         sys.exit(0)
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.dump_stream:
rpmbuild 6aa3dc9
-        sys.stdout.write(ofdoc.get_stream(options.dump_stream))
rpmbuild 6aa3dc9
+        os.write(sys.stdout.fileno(), (ofdoc.get_stream(options.dump_stream)))
rpmbuild 6aa3dc9
         sys.exit(0)
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     if options.dump_stream_by_name:
rpmbuild 6aa3dc9
         d = ofdoc.find_stream_by_name(options.dump_stream_by_name)
rpmbuild 6aa3dc9
-        sys.stdout.write(ofdoc.get_stream(d.index))
rpmbuild 6aa3dc9
+        os.write(sys.stdout.fileno(), (ofdoc.get_stream(d.index)))
rpmbuild 6aa3dc9
         sys.exit(0)
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     #
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
From fa56b4b1717eb195cd12605a8e3706a33662ffb8 Mon Sep 17 00:00:00 2001
rpmbuild 6aa3dc9
From: Lumir Balhar <lbalhar@redhat.com>
rpmbuild 6aa3dc9
Date: Thu, 24 Oct 2019 12:45:10 +0200
rpmbuild 6aa3dc9
Subject: [PATCH 7/7] Write bytes to file opened as binary
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
---
rpmbuild 6aa3dc9
 officeparser.py | 4 ++--
rpmbuild 6aa3dc9
 1 file changed, 2 insertions(+), 2 deletions(-)
rpmbuild 6aa3dc9
rpmbuild 6aa3dc9
diff --git a/officeparser.py b/officeparser.py
rpmbuild 6aa3dc9
index 43d45ea..fdf155a 100755
rpmbuild 6aa3dc9
--- a/officeparser.py
rpmbuild 6aa3dc9
+++ b/officeparser.py
rpmbuild 6aa3dc9
@@ -801,8 +801,8 @@ def _main():
rpmbuild 6aa3dc9
                 f.write(ofdoc.get_stream(d.index))
rpmbuild 6aa3dc9
                 f.close()
rpmbuild 6aa3dc9
                 if options.create_manifest:
rpmbuild 6aa3dc9
-                    manifest.write(os.path.basename(filename))
rpmbuild 6aa3dc9
-                    manifest.write("\n")
rpmbuild 6aa3dc9
+                    manifest.write(os.path.basename(filename).encode())
rpmbuild 6aa3dc9
+                    manifest.write(b"\n")
rpmbuild 6aa3dc9
                 logging.debug("created file {0}".format(filename))
rpmbuild 6aa3dc9
 
rpmbuild 6aa3dc9
     while options.extract_macros: