def setlogfd(s, logfd):
s.logfile = logfd
- logfd.write("This is %s %s %s\n" % \
+ logfd.write("This is %s %s\n" % \
(offlineimap.version.productname,
- offlineimap.version.versionstr,
- offlineimap.version.revstr))
+ offlineimap.version.versionstr))
logfd.write("Python: %s\n" % sys.version)
logfd.write("Platform: %s\n" % sys.platform)
logfd.write("Args: %s\n" % sys.argv)
################################################## WARNINGS
def msgtoreadonly(s, destfolder, uid, content, flags):
- if not (config.has_option('general', 'ignore-readonly') and config.getboolean("general", "ignore-readonly")):
+ if not (s.config.has_option('general', 'ignore-readonly') and s.config.getboolean("general", "ignore-readonly")):
s.warn("Attempted to synchronize message %d to folder %s[%s], but that folder is read-only. The message will not be copied to that folder." % \
(uid, s.getnicename(destfolder), destfolder.getname()))
def flagstoreadonly(s, destfolder, uidlist, flags):
- if not (config.has_option('general', 'ignore-readonly') and config.getboolean("general", "ignore-readonly")):
+ if not (s.config.has_option('general', 'ignore-readonly') and s.config.getboolean("general", "ignore-readonly")):
s.warn("Attempted to modify flags for messages %s in folder %s[%s], but that folder is read-only. No flags have been modified for that message." % \
(str(uidlist), s.getnicename(destfolder), destfolder.getname()))
def deletereadonly(s, destfolder, uidlist):
- if not (config.has_option('general', 'ignore-readonly') and config.getboolean("general", "ignore-readonly")):
+ if not (s.config.has_option('general', 'ignore-readonly') and s.config.getboolean("general", "ignore-readonly")):
s.warn("Attempted to delete messages %s in folder %s[%s], but that folder is read-only. No messages have been deleted in that folder." % \
(str(uidlist), s.getnicename(destfolder), destfolder.getname()))
s.getnicename(srcrepos),
s.getnicename(destrepos)))
- def validityproblem(s, folder, saved, new):
- s.warn("UID validity problem for folder %s (saved %d; got %d); skipping it" % \
- (folder.getname(), saved, new))
+ def skippingfolder(s, folder):
+ """Called when a folder sync operation is started."""
+ if s.verbose >= 0:
+ s._msg("Skipping %s (not changed)" % folder.getname())
+
+ def validityproblem(s, folder):
+ s.warn("UID validity problem for folder %s (repo %s) (saved %d; got %d); skipping it" % \
+ (folder.getname(), folder.getrepository().getname(),
+ folder.getsaveduidvalidity(), folder.getuidvalidity()))
def loadmessagelist(s, repos, folder):
if s.verbose > 0:
def mainException(s):
s._msg(s.getMainExceptionString())
- def terminate(s, exitstatus = 0):
+ def terminate(s, exitstatus = 0, errortitle = None, errormsg = None):
"""Called to terminate the application."""
+ if errormsg <> None:
+ if errortitle <> None:
+ sys.stderr.write('ERROR: %s\n\n%s\n'%(errortitle, errormsg))
+ else:
+ sys.stderr.write('%s\n' % errormsg)
sys.exit(exitstatus)
def threadExited(s, thread):