From 510fa037d8a9c63bd1af89f39016fd88129aa677 Mon Sep 17 00:00:00 2001 From: jgoerzen Date: Mon, 6 Jan 2003 21:41:14 +0100 Subject: [PATCH] /offlineimap/head: changeset 313 Just to be sure, since it could be called by multiple threads, genmbnames will not lock itself. --- offlineimap/head/offlineimap/mbnames.py | 45 ++++++++++++++----------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/offlineimap/head/offlineimap/mbnames.py b/offlineimap/head/offlineimap/mbnames.py index 42f5e54..95acfbf 100644 --- a/offlineimap/head/offlineimap/mbnames.py +++ b/offlineimap/head/offlineimap/mbnames.py @@ -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 write(): 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()