summaryrefslogtreecommitdiffstats
path: root/rtemstoolkit
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2024-04-19 11:12:09 +1000
committerChris Johns <chrisj@rtems.org>2024-04-22 16:42:08 +1000
commitb9d32b3bb5ad68ea0ac98f02273b07ab6b4a520c (patch)
tree0f22ab410640ccabff4ebb7ab3c7f3237bceb097 /rtemstoolkit
parentrtems-score-thread.ini: Remove _Thread_Close so trace examples link (diff)
downloadrtems-tools-b9d32b3bb5ad68ea0ac98f02273b07ab6b4a520c.tar.bz2
rtemstoolkit: Fix decoding unicode strings in output
Diffstat (limited to 'rtemstoolkit')
-rwxr-xr-xrtemstoolkit/execute.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/rtemstoolkit/execute.py b/rtemstoolkit/execute.py
index 31d3a8a..c7d8134 100755
--- a/rtemstoolkit/execute.py
+++ b/rtemstoolkit/execute.py
@@ -37,6 +37,7 @@
from __future__ import print_function
import functools
+import codecs
import io
import os
import re
@@ -203,6 +204,10 @@ class execute(object):
stacktraces.trace()
if trace_threads:
print('execute:_readthread: start')
+ if sys.stdout.encoding is not None:
+ decoder = codecs.getincrementaldecoder(sys.stdout.encoding)()
+ else:
+ decoder = None
count = 0
line = ''
try:
@@ -222,8 +227,8 @@ class execute(object):
_output_line(line + '\n', exe, prefix, out, count)
break
# str and bytes are the same type in Python2
- if type(data) is not str and type(data) is bytes:
- data = data.decode(sys.stdout.encoding)
+ if decoder is not None and type(data) is not str and type(data) is bytes:
+ data = decoder.decode(data)
last_ch = data[-1]
sd = (line + data).split('\n')
if last_ch != '\n':
@@ -382,6 +387,9 @@ class execute(object):
if self.verbose:
log.output(what + ': ' + cs)
log.trace('exe: %s' % (cs))
+ if shell and self.shell_exe:
+ command = arg_list(command)
+ command[:0] = self.shell_exe
if not stdin and self.input:
stdin = subprocess.PIPE
if not stdout: