diff --git a/llvm/utils/lit/lit/builtin_commands/cat.py b/llvm/utils/lit/lit/builtin_commands/cat.py index fc7d1229bc674..bfd6e86f46bdb 100644 --- a/llvm/utils/lit/lit/builtin_commands/cat.py +++ b/llvm/utils/lit/lit/builtin_commands/cat.py @@ -1,5 +1,6 @@ import getopt import os +import platform import sys from io import StringIO @@ -65,18 +66,32 @@ def run(argv, stdin, stdout, stderr, cwd): for filename in filenames: path = filename - contents = None if not os.path.isabs(path): path = os.path.join(cwd, path) - try: - with open(path, "rb") as fileToCat: - contents = fileToCat.read() - except IOError as error: - error.filename = filename - stderr.write(str(error).encode()) - return 1 + + contents = None + is_text = False + if platform.system() == "OS/390": + try: + with open(path, "r") as fileToCat: + contents = fileToCat.read() + is_text = True + except: + pass + + if contents is None: + try: + with open(path, "rb") as fileToCat: + contents = fileToCat.read() + except IOError as error: + error.filename = filename + stderr.write(str(error).encode()) + return 1 + if show_nonprinting: contents = convertToCaretAndMNotation(contents) + elif is_text: + contents = contents.encode() stdout.write(contents) return 0