aboutsummaryrefslogtreecommitdiff
path: root/source/Interpreter/embedded_interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'source/Interpreter/embedded_interpreter.py')
-rw-r--r--source/Interpreter/embedded_interpreter.py44
1 files changed, 31 insertions, 13 deletions
diff --git a/source/Interpreter/embedded_interpreter.py b/source/Interpreter/embedded_interpreter.py
index 8ba539a2b0c9..c103b7e2e1d3 100644
--- a/source/Interpreter/embedded_interpreter.py
+++ b/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))