diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Interpreter/embedded_interpreter.py')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Interpreter/embedded_interpreter.py | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/contrib/llvm/tools/lldb/source/Interpreter/embedded_interpreter.py b/contrib/llvm/tools/lldb/source/Interpreter/embedded_interpreter.py index 8ba539a..c103b7e 100644 --- a/contrib/llvm/tools/lldb/source/Interpreter/embedded_interpreter.py +++ b/contrib/llvm/tools/lldb/source/Interpreter/embedded_interpreter.py @@ -25,16 +25,21 @@ else: g_builtin_override_called = False + class LLDBQuitter(object): + def __init__(self, name): self.name = name + def __repr__(self): self() + def __call__(self, code=None): global g_builtin_override_called g_builtin_override_called = True raise SystemExit(-1) + def setquit(): '''Redefine builtin functions 'quit()' and 'exit()' to print a message and raise an EOFError exception.''' # This function will be called prior to each interactive @@ -56,21 +61,25 @@ g_run_one_line_str = None def get_terminal_size(fd): try: - import fcntl, termios, struct + import fcntl + import termios + import struct hw = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) except: - hw = (0,0) + hw = (0, 0) return hw + def readfunc_stdio(prompt): sys.stdout.write(prompt) return sys.stdin.readline().rstrip() -def run_python_interpreter (local_dict): + +def run_python_interpreter(local_dict): # Pass in the dictionary, for continuity from one session to the next. setquit() try: - fd = sys.stdin.fileno(); + fd = sys.stdin.fileno() interacted = False if get_terminal_size(fd)[1] == 0: try: @@ -83,33 +92,42 @@ def run_python_interpreter (local_dict): try: termios.tcsetattr(fd, termios.TCSADRAIN, new) interacted = True - code.interact(banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()'.", readfunc=readfunc_stdio, local=local_dict) + code.interact( + banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()'.", + readfunc=readfunc_stdio, + local=local_dict) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old) except: pass # Don't need to turn off echoing if not interacted: - code.interact(banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.", readfunc=readfunc_stdio, local=local_dict) + code.interact( + banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.", + readfunc=readfunc_stdio, + local=local_dict) else: # We have a real interactive terminal - code.interact(banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.", local=local_dict) + code.interact( + banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.", + local=local_dict) except SystemExit as e: global g_builtin_override_called if not g_builtin_override_called: - print('Script exited with %s' %(e)) + print('Script exited with %s' % (e)) + -def run_one_line (local_dict, input_string): +def run_one_line(local_dict, input_string): global g_run_one_line_str setquit() try: - repl = code.InteractiveConsole(local_dict); + repl = code.InteractiveConsole(local_dict) if input_string: - repl.runsource (input_string) + repl.runsource(input_string) elif g_run_one_line_str: - repl.runsource (g_run_one_line_str) + repl.runsource(g_run_one_line_str) except SystemExit as e: global g_builtin_override_called if not g_builtin_override_called: - print('Script exited with %s' %(e)) + print('Script exited with %s' % (e)) |