rev 313 - offlineimap/head/offlineimap

[email protected] Mon, 6 Jan 2003 08:41:15 -0600 (CST)
Newsgroups gmane.mail.imap.offlineimap.subversion
Message-ID <[email protected]>
Author: jgoerzen
Date: 2003-01-06 08:41:14 -0600 (Mon, 06 Jan 2003)
New Revision: 313

Modified:
   offlineimap/head/offlineimap/mbnames.py
Log:
Just to be sure, since it could be called by multiple threads, genmbnames
will not lock itself.


Modified: offlineimap/head/offlineimap/mbnames.py
==============================================================================
--- offlineimap/head/offlineimap/mbnames.py	(original)
+++ offlineimap/head/offlineimap/mbnames.py	Mon Jan  6 08:41:15 2003
@@ -18,10 +18,12 @@
 
 import os.path
 import re                               # for folderfilter
+from threading import *
 
 boxes = {}
 config = None
 accounts = None
+mblock = Lock()
 
 def init(conf, accts):
     global config, accounts
@@ -45,25 +47,28 @@
 def genmbnames():
     """Takes a configparser object and a boxlist, which is a list of hashes
     containing 'accountname' and 'foldername' keys."""
-    localeval = config.getlocaleval()
-    if not config.getboolean("mbnames", "enabled"):
-        return
-    file = open(os.path.expanduser(config.get("mbnames", "filename")), "wt")
-    file.write(localeval.eval(config.get("mbnames", "header")))
-    folderfilter = lambda accountname, foldername: 1
-    if config.has_option("mbnames", "folderfilter"):
-        folderfilter = localeval.eval(config.get("mbnames", "folderfilter"),
-                                      {'re': re})
-    itemlist = []
-    for accountname in boxes.keys():
-        for foldername in boxes[accountname]:
-            if folderfilter(accountname, foldername):
-                itemlist.append(config.get("mbnames", "peritem", raw=1) % \
-                                {'accountname': accountname,
-                                 'foldername': foldername})
-    file.write(localeval.eval(config.get("mbnames", "sep")).join(itemlist))
-    file.write(localeval.eval(config.get("mbnames", "footer")))
-    file.close()
-    
+    mblock.acquire()
+    try:
+        localeval = config.getlocaleval()
+        if not config.getboolean("mbnames", "enabled"):
+            return
+        file = open(os.path.expanduser(config.get("mbnames", "filename")), "wt")
+        file.write(localeval.eval(config.get("mbnames", "header")))
+        folderfilter = lambda accountname, foldername: 1
+        if config.has_option("mbnames", "folderfilter"):
+            folderfilter = localeval.eval(config.get("mbnames", "folderfilter"),
+                                          {'re': re})
+        itemlist = []
+        for accountname in boxes.keys():
+            for foldername in boxes[accountname]:
+                if folderfilter(accountname, foldername):
+                    itemlist.append(config.get("mbnames", "peritem", raw=1) % \
+                                    {'accountname': accountname,
+                                     'foldername': foldername})
+        file.write(localeval.eval(config.get("mbnames", "sep")).join(itemlist))
+        file.write(localeval.eval(config.get("mbnames", "footer")))
+        file.close()
+    finally:
+        mblock.release()