diff options
author | Nikolaus Schulz <microschulz@web.de> | 2009-03-03 04:33:09 +0100 |
---|---|---|
committer | Nikolaus Schulz <microschulz@web.de> | 2010-07-19 01:13:25 +0200 |
commit | d706409c595a5994371d2b238b2a5e77be171f13 (patch) | |
tree | c875598f9e6a88274d195c1f50d257434fbabe2a /archivemail.py | |
parent | d7265894143f3d6d5a23c5d4f8342957316b3c8d (diff) | |
download | archivemail-d706409c595a5994371d2b238b2a5e77be171f13.tar.gz archivemail-d706409c595a5994371d2b238b2a5e77be171f13.tar.bz2 archivemail-d706409c595a5994371d2b238b2a5e77be171f13.zip |
Switch mbox locking from flock(2) to posix lockf(2)
flock() locks aren't portable; lockf() locks are.
Diffstat (limited to 'archivemail.py')
-rwxr-xr-x | archivemail.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/archivemail.py b/archivemail.py index dd2f2b4..0e89351 100755 --- a/archivemail.py +++ b/archivemail.py @@ -351,15 +351,15 @@ class Mbox(mailbox.UnixMailbox): os.utime(self.mbox_file_name, (self.original_atime, \ self.original_mtime)) - def exclusive_lock(self): - """Set an advisory lock on the 'mbox' mailbox""" + def posix_lock(self): + """Set an exclusive posix lock on the 'mbox' mailbox""" vprint("obtaining exclusive lock on file '%s'" % self.mbox_file_name) - fcntl.flock(self.mbox_file.fileno(), fcntl.LOCK_EX) + fcntl.lockf(self.mbox_file, fcntl.LOCK_EX|fcntl.LOCK_NB) - def exclusive_unlock(self): - """Unset any advisory lock on the 'mbox' mailbox""" - vprint("dropping exclusive lock on file '%s'" % self.mbox_file_name) - fcntl.flock(self.mbox_file.fileno(), fcntl.LOCK_UN) + def posix_unlock(self): + """Unset any posix lock on the 'mbox' mailbox""" + vprint("dropping posix lock on file '%s'" % self.mbox_file_name) + fcntl.lockf(self.mbox_file, fcntl.LOCK_UN) def dotlock_lock(self): """Create a dotlock file on the 'mbox' mailbox""" @@ -1133,7 +1133,7 @@ def _archive_mbox(mailbox_name, final_archive_name): archive = ArchiveMbox(final_archive_name) original.dotlock_lock() - original.exclusive_lock() + original.posix_lock() msg = original.next() if not msg and (original.starting_size > 0): user_error("'%s' is not a valid mbox-format mailbox" % mailbox_name) @@ -1164,7 +1164,7 @@ def _archive_mbox(mailbox_name, final_archive_name): archive.finalise() if retain: retain.finalise() - original.exclusive_unlock() + original.posix_unlock() original.close() original.reset_timestamps() original.dotlock_unlock() |