diff options
| author | Lex Neva <github.com@lexneva.name> | 2019-11-11 14:11:01 -0500 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2020-01-29 01:29:49 -0500 |
| commit | 31148ff3a5ed5b957192a00cc7b7272f31b115b9 (patch) | |
| tree | fe3674a4444856aaaadd534feb11c11b98618462 /stub.py | |
| parent | 5375945defef50a3515072901e5daaa3717d7c6a (diff) | |
handle binary data correctly in python 2 and 3
Diffstat (limited to 'stub.py')
| -rw-r--r-- | stub.py | 26 |
1 files changed, 15 insertions, 11 deletions
@@ -5,7 +5,6 @@ import subprocess import sys import traceback - # ink/stitch # # stub.py: pyinstaller execution stub @@ -46,20 +45,25 @@ except BaseException: if sys.platform == "win32": import msvcrt - msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) -if sys.stdout.encoding: - stdout = stdout.decode(sys.stdout.encoding) + msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) -sys.stdout.write(stdout) -sys.stdout.flush() +try: + # In Python 3, we need to use sys.stdout.buffer to write binary data to stdout. + sys.stdout.buffer.write(stdout) + sys.stdout.buffer.flush() +except AttributeError: + # Python 2 doesn't have sys.stdout.buffer but we can write binary data to stdout by default. + sys.stdout.write(stdout) + sys.stdout.flush() stderr = stderr.strip() if stderr: - if sys.stderr.encoding: - stderr = stderr.decode(sys.stderr.encoding) - - sys.stderr.write(stderr) - sys.stderr.flush() + try: + sys.stderr.buffer.write(stderr) + sys.stderr.buffer.flush() + except AttributeError: + sys.stderr.write(stderr) + sys.stderr.flush() sys.exit(extension.returncode) |
