MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
'''
-import os, tempfile
+import os, platform, tempfile
import pickle
import logging
from mailbox_state import MailboxState
del saved_data[user]
logging.debug("The user %s will not be saved.", user)
self.data = saved_data
-
# avoid test mode or cases where nothing needs saving
if(len(saved_data)==0):
+ cachefile.close()
os.unlink(tmpname)
return
# serialize in file
pickle.dump((self.version, self.data), cachefile)
logging.debug("%s users stored.", len(self.data))
- cachefile.close()
+
+ # handle windows non-atomic rename
+ if(platform.system()=='Windows'):
+ if(os.path.exists(CACHE_FILENAME)):
+ cachefile.close()
+ os.unlink(CACHE_FILENAME)
+
os.rename(tmpname, CACHE_FILENAME)
except:
os.unlink(tmpname)
internal_date.strftime("%d %b %Y %H:%M:%S"),
received_date.strftime("%d %b %Y %H:%M:%S"),
fetched_received_date.split("Received:")[1])
- if(test_mode==0):
+ if(not test_mode):
try:
session.update_message(mid, box.name, received_date)
except UserWarning as ex: