diff --git a/offlineimap/accounts.py b/offlineimap/accounts.py index 0fc1edf..cd09646 100644 --- a/offlineimap/accounts.py +++ b/offlineimap/accounts.py @@ -187,6 +187,8 @@ class AccountSynchronizationMixin: try: try: self.sync(siglistener) + except (KeyboardInterrupt, SystemExit): + raise except: self.ui.warn("Error occured attempting to sync account " + self.name \ + ": " + str(sys.exc_info()[1])) @@ -201,6 +203,8 @@ class AccountSynchronizationMixin: try: try: self.sync(siglistener) + except (KeyboardInterrupt, SystemExit): + raise except: self.ui.warn("Error occured attempting to sync account " + self.name \ + ": " + str(sys.exc_info()[1])) @@ -370,6 +374,8 @@ def syncfolder(accountname, remoterepos, remotefolder, localrepos, localfolder.syncmessagesto(statusfolder) statusfolder.save() localrepos.restore_atime() + except (KeyboardInterrupt, SystemExit): + raise except: ui.warn("ERROR in syncfolder for %s folder %s: %s" % \ (accountname,remotefolder.getvisiblename(),sys.exc_info()[1])) diff --git a/offlineimap/init.py b/offlineimap/init.py index d0676bc..f652328 100644 --- a/offlineimap/init.py +++ b/offlineimap/init.py @@ -334,14 +334,14 @@ class OfflineImap: 'siglisteners': siglisteners}) t.setDaemon(1) t.start() - except: - ui.mainException() - - try: threadutil.exitnotifymonitorloop(threadutil.threadexited) - except SystemExit: + + except KeyboardInterrupt: + ui.terminate(1, errormsg = 'CTRL-C pressed, aborting...') + return + except (SystemExit): raise except: - ui.mainException() # Also expected to terminate. + ui.mainException()