summaryrefslogtreecommitdiff
path: root/src/poezio.py
diff options
context:
space:
mode:
authorlouiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>2010-12-26 20:51:14 +0000
committerlouiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>2010-12-26 20:51:14 +0000
commitcdb8128d321c16bf526afdbd7d790fc6189239b3 (patch)
tree731f205c25b6ae1dfe2069216ecd103a2dcee7cf /src/poezio.py
parent133cda19128b80cf52bcf3c9b16c467d30a56c7c (diff)
downloadpoezio-cdb8128d321c16bf526afdbd7d790fc6189239b3.tar.gz
poezio-cdb8128d321c16bf526afdbd7d790fc6189239b3.tar.bz2
poezio-cdb8128d321c16bf526afdbd7d790fc6189239b3.tar.xz
poezio-cdb8128d321c16bf526afdbd7d790fc6189239b3.zip
fixed #1988 Traceback handler
Diffstat (limited to 'src/poezio.py')
-rw-r--r--src/poezio.py66
1 files changed, 4 insertions, 62 deletions
diff --git a/src/poezio.py b/src/poezio.py
index 03b6d3e6..7989b4d5 100644
--- a/src/poezio.py
+++ b/src/poezio.py
@@ -20,70 +20,9 @@
Starting point of poezio. Launches both the Connection and Gui
"""
-import os
-import curses
import sys
-import traceback
-import threading
-
+import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
-
-def installThreadExcepthook():
- """
- Workaround for sys.excepthook thread bug
- See http://bugs.python.org/issue1230540
- Python, you made me sad :(
- """
- init_old = threading.Thread.__init__
- def init(self, *args, **kwargs):
- init_old(self, *args, **kwargs)
- run_old = self.run
- def run_with_except_hook(*args, **kw):
- try:
- run_old(*args, **kw)
- except (KeyboardInterrupt, SystemExit):
- raise
- except:
- sys.excepthook(*sys.exc_info())
- self.run = run_with_except_hook
- threading.Thread.__init__ = init
-
-class MyStdErr(object):
- def __init__(self, fd):
- """
- Change sys.stderr to something like /dev/null
- to disable any printout on the screen that would
- mess everything
- """
- self.old_stderr = sys.stderr
- sys.stderr = fd
- def restore(self):
- """
- Restore the good ol' sys.stderr, because we need
- it in order to print the tracebacks
- """
- sys.stderr.close()
- sys.stderr = self.old_stderr
-
-# my_stderr = MyStdErr(open('/dev/null', 'a'))
-
-def exception_handler(type_, value, trace):
- """
- on any traceback: exit ncurses and print the traceback
- then exit the program
- """
- my_stderr.restore()
- try:
- curses.endwin()
- curses.echo()
- except: # if an exception is raised but initscr has never been called yet
- pass
- traceback.print_exception(type_, value, trace, None, sys.stderr)
- import os # used to quit the program even from a thread
- os.abort()
-
-# sys.excepthook = exception_handler
-
import signal
import logging
@@ -96,4 +35,7 @@ if __name__ == '__main__':
if options.debug:
logging.basicConfig(filename=options.debug,level=logging.DEBUG)
connection.start() # Connect to remote server
+ # Disable any display of non-wanted text on the terminal
+ # by redirecting stderr to /dev/null
+ # sys.stderr = open('/dev/null', 'a')
core.main_loop() # Refresh the screen, wait for user events etc