Replace invlid output before logging it

This commit is contained in:
Bastian Kleineidam 2015-12-05 13:00:57 +01:00
parent 7f3fc3be79
commit d293404cd0
2 changed files with 12 additions and 0 deletions

View File

@ -9,6 +9,8 @@
Closes: GH bug #28
* Updated PyPI trove classifiers to include Python 3
Closes: GH bug #25
* Escape output messages before logging them.
Closes: GH bug #29
1.8 (released 19.7.2015)

View File

@ -17,6 +17,7 @@
from __future__ import print_function
import os
import sys
import codecs
import shutil
import subprocess
import mimetypes
@ -492,6 +493,14 @@ def get_single_outfile (directory, archive, extension=""):
return outfile + extension
def init_log():
"""Wrap sys.stdout and sys.stderr in encoding-aware stream writers."""
encoding = locale.getpreferredencoding()
errors = 'backslashreplace'
sys.stdout = codecs.getwriter(encoding)(sys.stdout, errors)
sys.stderr = codecs.getwriter(encoding)(sys.stderr, errors)
def log_error (msg, out=sys.stderr):
"""Print error message to stderr (or any other given output)."""
print("patool error:", msg, file=out)
@ -686,4 +695,5 @@ def chdir(directory):
return olddir
init_log()
init_mimedb()