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()