From 687f2a3da4b38451fbf9dfe22216b30a98f869fb Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 22 Aug 2019 18:20:48 +1000 Subject: [PATCH] Tools: fixed apj_tool for python3 py3 really is a major pain for simple string tools --- Tools/scripts/apj_tool.py | 52 +++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/Tools/scripts/apj_tool.py b/Tools/scripts/apj_tool.py index 8c1eadf1ba..e67d76c26c 100755 --- a/Tools/scripts/apj_tool.py +++ b/Tools/scripts/apj_tool.py @@ -7,6 +7,24 @@ import os, sys, struct, json, base64, zlib, hashlib import argparse +def to_ascii(s): + '''get ascii string''' + if sys.version_info.major >= 3: + return str(s, 'ascii') + else: + return str(s) + +def to_bytes(s): + '''get bytes string''' + if sys.version_info.major >= 3: + if isinstance(s,bytes): + return s + if isinstance(s,int): + s = chr(s) + return bytes(s, 'ascii') + else: + return bytes(s) + class embedded_defaults(object): '''class to manipulate embedded defaults in a firmware''' def __init__(self, filename): @@ -61,7 +79,7 @@ class embedded_defaults(object): def save_apj(self): '''save apj file''' - self.fw_json['image'] = base64.b64encode(zlib.compress(self.firmware, 9)) + self.fw_json['image'] = to_ascii(base64.b64encode(zlib.compress(self.firmware, 9))) f = open(self.filename,'w') json.dump(self.fw_json,f,indent=4) f.truncate() @@ -113,7 +131,7 @@ class embedded_defaults(object): '''return current contents''' contents = self.firmware[self.offset+20:self.offset+20+self.length] # remove carriage returns - contents = contents.replace('\r','') + contents = contents.replace(b'\r',b'') return contents def set_contents(self, contents): @@ -124,7 +142,7 @@ class embedded_defaults(object): sys.exit(1) new_fw = self.firmware[:self.offset+18] new_fw += struct.pack("