summaryrefslogtreecommitdiff
path: root/src/common.py
diff options
context:
space:
mode:
authorlouiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>2010-07-19 23:55:20 +0000
committerlouiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>2010-07-19 23:55:20 +0000
commit0cd619660c83a238bd0192ac5707e1ab591d7408 (patch)
tree5a7311a1f6997de4bef22cf13c15ba38b1c6eebf /src/common.py
parente656e5924bef38d5e69fffca6e1d46c7bed69139 (diff)
downloadpoezio-0cd619660c83a238bd0192ac5707e1ab591d7408.tar.gz
poezio-0cd619660c83a238bd0192ac5707e1ab591d7408.tar.bz2
poezio-0cd619660c83a238bd0192ac5707e1ab591d7408.tar.xz
poezio-0cd619660c83a238bd0192ac5707e1ab591d7408.zip
fixed #1587
Diffstat (limited to 'src/common.py')
-rw-r--r--src/common.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/common.py b/src/common.py
index 4406e4cb..456f73e5 100644
--- a/src/common.py
+++ b/src/common.py
@@ -43,9 +43,39 @@ import curses
import sys
import select
import errno
-import xmpp
import time
+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 restaure(self):
+ """
+ Restaure the good ol' sys.stderr, because we need
+ it in order to print the tracebacks
+ """
+ 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.restaure()
+ curses.endwin()
+ curses.echo()
+ traceback.print_exception(type_, value, trace, None, sys.stderr)
+ sys.exit(2)
+
+import xmpp
+
def debug(string):
"""
Print a string in a file.