[PATCH v2] Output more detailed error on corrupt LocalStatus

Sebastian Spaeth Sebastian at SSpaeth.de
Wed May 4 18:44:01 BST 2011

When our LocalStatus cache is corrupt, ie e.g. it contains lines not in
the form number:number, we would previously just raise a ValueError
stating things like "too many values". In case we encounter clearly
corrupt LocalStatus cache entries, clearly raise an exception stating
the filename and the line, so that people can attempt to repair it.

Signed-off-by: Sebastian Spaeth <Sebastian at SSpaeth.de>
Make it python 2.5 compliant and fix the line issue as requested.

 offlineimap/folder/LocalStatus.py |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/offlineimap/folder/LocalStatus.py b/offlineimap/folder/LocalStatus.py
index 623829a..21cc571 100644
--- a/offlineimap/folder/LocalStatus.py
+++ b/offlineimap/folder/LocalStatus.py
@@ -78,8 +78,13 @@ class LocalStatusFolder(BaseFolder):
         assert(line == magicline)
         for line in file.xreadlines():
             line = line.strip()
-            uid, flags = line.split(':')
-            uid = long(uid)
+            try:
+                uid, flags = line.split(':')
+                uid = long(uid)
+            except ValueError, e:
+                errstr = "Corrupt line '%s' in cache file '%s'" % (line, self.filename)
+                self.ui.warn(errstr)
+                raise ValueError(errstr)
             flags = [x for x in flags]
             self.messagelist[uid] = {'uid': uid, 'flags': flags}

More information about the OfflineIMAP-project mailing list