rev 294 - in offlineimap/head/offlineimap: folder ui
[email protected] Thu, 2 Jan 2003 19:01:42 -0600 (CST)
| Newsgroups | gmane.mail.imap.offlineimap.subversion |
|---|---|
| Message-ID | <[email protected]> |
Author: jgoerzen
Date: 2003-01-02 19:01:41 -0600 (Thu, 02 Jan 2003)
New Revision: 294
Modified:
offlineimap/head/offlineimap/folder/LocalStatus.py
offlineimap/head/offlineimap/ui/Tk.py
Log:
Updated with various fixes
Modified: offlineimap/head/offlineimap/folder/LocalStatus.py
==============================================================================
--- offlineimap/head/offlineimap/folder/LocalStatus.py (original)
+++ offlineimap/head/offlineimap/folder/LocalStatus.py Thu Jan 2 19:01:41 2003
@@ -17,7 +17,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
from Base import BaseFolder
-import os
+import os, threading
magicline = "OFFLINEIMAP LocalStatus CACHE DATA - DO NOT MODIFY - FORMAT 1"
@@ -29,6 +29,8 @@
self.filename = os.path.join(root, name)
self.messagelist = None
self.repository = repository
+ self.savelock = threading.Lock()
+ self.doautosave = 1
def storesmessages(self):
return 0
@@ -68,16 +70,24 @@
self.messagelist[uid] = {'uid': uid, 'flags': flags}
file.close()
+ def autosave(self):
+ if self.doautosave:
+ self.save()
+
def save(self):
- file = open(self.filename + ".tmp", "wt")
- file.write(magicline + "\n")
- for msg in self.messagelist.values():
- flags = msg['flags']
- flags.sort()
- flags = ''.join(flags)
- file.write("%s:%s\n" % (msg['uid'], flags))
- file.close()
- os.rename(self.filename + ".tmp", self.filename)
+ self.savelock.acquire()
+ try:
+ file = open(self.filename + ".tmp", "wt")
+ file.write(magicline + "\n")
+ for msg in self.messagelist.values():
+ flags = msg['flags']
+ flags.sort()
+ flags = ''.join(flags)
+ file.write("%s:%s\n" % (msg['uid'], flags))
+ file.close()
+ os.rename(self.filename + ".tmp", self.filename)
+ finally:
+ self.savelock.release()
def getmessagelist(self):
return self.messagelist
@@ -92,6 +102,7 @@
return uid
self.messagelist[uid] = {'uid': uid, 'flags': flags}
+ self.autosave()
return uid
def getmessageflags(self, uid):
@@ -99,9 +110,10 @@
def savemessageflags(self, uid, flags):
self.messagelist[uid]['flags'] = flags
+ self.autosave()
def deletemessage(self, uid):
if not uid in self.messagelist:
return
del(self.messagelist[uid])
-
+ self.autosave()
Modified: offlineimap/head/offlineimap/ui/Tk.py
==============================================================================
--- offlineimap/head/offlineimap/ui/Tk.py (original)
+++ offlineimap/head/offlineimap/ui/Tk.py Thu Jan 2 19:01:41 2003
@@ -165,6 +165,7 @@
self.created.wait()
del self.created
+ time.sleep(1)
if doidlevac:
t = threadutil.ExitNotifyThread(target = self.idlevacuum,