diff options
author | Nikolaus Schulz <microschulz@web.de> | 2010-07-30 13:24:36 +0200 |
---|---|---|
committer | Nikolaus Schulz <microschulz@web.de> | 2010-07-30 13:24:36 +0200 |
commit | eadedf27d09776b2ad59364a86fa1af6cbe86525 (patch) | |
tree | cccb951816765824fd899376deb9bf563da1dbe9 | |
parent | 71485f2469ca49bc04fe35d5993f1ef560393399 (diff) | |
download | archivemail-eadedf27d09776b2ad59364a86fa1af6cbe86525.tar.gz archivemail-eadedf27d09776b2ad59364a86fa1af6cbe86525.tar.bz2 archivemail-eadedf27d09776b2ad59364a86fa1af6cbe86525.zip |
Fix crash when unlocking an mbox after dotlocking failed with EACCES
If we don't have sufficient permissions to create a dotlock for an mbox file,
record that, and don't try to remove the dotlock when unlocking the mbox
later.
-rwxr-xr-x | archivemail | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/archivemail b/archivemail index be90413..ec05171 100755 --- a/archivemail +++ b/archivemail @@ -323,6 +323,7 @@ class LockableMboxMixin: self.mbox_file = mbox_file self.mbox_file_name = mbox_file_name self._locked = False + self._use_dotlock = True def lock(self): """Lock this mbox with both a dotlock and a posix lock.""" @@ -386,6 +387,7 @@ class LockableMboxMixin: if not options.quiet: user_warning("no write permissions: omitting dotlock for '%s'" % \ self.mbox_file_name) + self._use_dotlock = False return raise try: @@ -411,7 +413,8 @@ class LockableMboxMixin: def _dotlock_unlock(self): """Delete the dotlock file for the 'mbox' mailbox.""" - assert self.mbox_file_name + if not self._use_dotlock: + return lock_name = self.mbox_file_name + options.lockfile_extension vprint("removing lockfile '%s'" % lock_name) os.remove(lock_name) |