diff options
author | Jerome Forissier <jerome@forissier.org> | 2019-09-25 20:28:33 +0200 |
---|---|---|
committer | Jérôme Forissier <jerome@forissier.org> | 2019-09-26 23:52:24 +0200 |
commit | 20d152b8d86d84259f382aef3a0d10d489bf17cb (patch) | |
tree | 9e9c9e37f555973a96479ae2449e868abbccb145 /scripts | |
parent | 8744ddb3b7ca38dcee01867b2201ebba3853c312 (diff) |
symbolize.py: fix exception when stdin is not a terminal
Commit 6b4fc6752b3c ("symbolize.py: disable terminal local echo") uses
termios functions on stdin unconditionally. Unfortunately, this will
cause an exception when stdin is not a terminal, for instance:
$ echo Hello | ./script/symbolize.py
Traceback (most recent call last):
File "./scripts/symbolize.py", line 497, in <module>
main()
File "./scripts/symbolize.py", line 484, in main
old = termios.tcgetattr(fd)
termios.error: (25, 'Inappropriate ioctl for device')
Fix the issue by making sure stdin is a TTY before using the termios
functions.
Fixes: 6b4fc6752b3c ("symbolize.py: disable terminal local echo")
Signed-off-by: Jerome Forissier <jerome@forissier.org>
Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/symbolize.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/scripts/symbolize.py b/scripts/symbolize.py index b61202d4..5928932d 100755 --- a/scripts/symbolize.py +++ b/scripts/symbolize.py @@ -481,16 +481,20 @@ def main(): symbolizer = Symbolizer(sys.stdout, args.dirs, args.strip_path) fd = sys.stdin.fileno() - old = termios.tcgetattr(fd) - new = termios.tcgetattr(fd) - new[3] = new[3] & ~termios.ECHO # lflags + isatty = os.isatty(fd) + if isatty: + old = termios.tcgetattr(fd) + new = termios.tcgetattr(fd) + new[3] = new[3] & ~termios.ECHO # lflags try: - termios.tcsetattr(fd, termios.TCSADRAIN, new) + if isatty: + termios.tcsetattr(fd, termios.TCSADRAIN, new) for line in sys.stdin: symbolizer.write(line) finally: symbolizer.flush() - termios.tcsetattr(fd, termios.TCSADRAIN, old) + if isatty: + termios.tcsetattr(fd, termios.TCSADRAIN, old) if __name__ == "__main__": |