|
38 | 38 | from ..utils.provenance import write_provenance
|
39 | 39 | from ..utils.misc import is_container, trim, str2bool
|
40 | 40 | from ..utils.filemanip import (md5, hash_infile, FileNotFoundError, hash_timestamp,
|
41 |
| - split_filename, to_str) |
| 41 | + split_filename, to_str, read_stream) |
42 | 42 | from .traits_extension import (
|
43 | 43 | traits, Undefined, TraitDictObject, TraitListObject, TraitError, isdefined,
|
44 | 44 | File, Directory, DictStrStr, has_metadata, ImageFile)
|
@@ -1268,9 +1268,7 @@ def __init__(self, name, impl):
|
1268 | 1268 | self._buf = ''
|
1269 | 1269 | self._rows = []
|
1270 | 1270 | self._lastidx = 0
|
1271 |
| - self.default_encoding = locale.getdefaultlocale()[1] |
1272 |
| - if self.default_encoding is None: |
1273 |
| - self.default_encoding = 'UTF-8' |
| 1271 | + self.default_encoding = locale.getdefaultlocale()[1] or 'UTF-8' |
1274 | 1272 |
|
1275 | 1273 | def fileno(self):
|
1276 | 1274 | "Pass-through for file descriptor."
|
@@ -1349,10 +1347,6 @@ def run_command(runtime, output=None, timeout=0.01):
|
1349 | 1347 | cmdline = runtime.cmdline
|
1350 | 1348 | env = _canonicalize_env(runtime.environ)
|
1351 | 1349 |
|
1352 |
| - default_encoding = locale.getdefaultlocale()[1] |
1353 |
| - if default_encoding is None: |
1354 |
| - default_encoding = 'UTF-8' |
1355 |
| - |
1356 | 1350 | errfile = None
|
1357 | 1351 | outfile = None
|
1358 | 1352 | stdout = sp.PIPE
|
@@ -1420,19 +1414,22 @@ def _process(drain=0):
|
1420 | 1414 |
|
1421 | 1415 | if output == 'allatonce':
|
1422 | 1416 | stdout, stderr = proc.communicate()
|
1423 |
| - result['stdout'] = stdout.decode(default_encoding).split('\n') |
1424 |
| - result['stderr'] = stderr.decode(default_encoding).split('\n') |
| 1417 | + result['stdout'] = read_stream(stdout, logger=iflogger) |
| 1418 | + result['stderr'] = read_stream(stderr, logger=iflogger) |
1425 | 1419 |
|
1426 | 1420 | elif output.startswith('file'):
|
1427 | 1421 | proc.wait()
|
1428 | 1422 | if outfile is not None:
|
1429 | 1423 | stdout.flush()
|
1430 |
| - result['stdout'] = [line.decode(default_encoding).strip() |
1431 |
| - for line in open(outfile, 'rb').readlines()] |
| 1424 | + with open(outfile, 'rb') as ofh: |
| 1425 | + stdoutstr = ofh.read() |
| 1426 | + result['stdout'] = read_stream(stdoutstr, logger=iflogger) |
| 1427 | + |
1432 | 1428 | if errfile is not None:
|
1433 | 1429 | stderr.flush()
|
1434 |
| - result['stderr'] = [line.decode(default_encoding).strip() |
1435 |
| - for line in open(errfile, 'rb').readlines()] |
| 1430 | + with open(errfile, 'rb') as efh: |
| 1431 | + stderrstr = efh.read() |
| 1432 | + result['stderr'] = read_stream(stderrstr, logger=iflogger) |
1436 | 1433 |
|
1437 | 1434 | if output == 'file':
|
1438 | 1435 | result['merged'] = result['stdout']
|
|
0 commit comments