summaryrefslogtreecommitdiffstats
path: root/maildrop/filelock.h
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /maildrop/filelock.h
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2
Initial checkin
Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'maildrop/filelock.h')
-rw-r--r--maildrop/filelock.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/maildrop/filelock.h b/maildrop/filelock.h
new file mode 100644
index 0000000..3c16db2
--- /dev/null
+++ b/maildrop/filelock.h
@@ -0,0 +1,30 @@
+#ifndef filelock_h
+#define filelock_h
+
+
+#include "exittrap.h"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Encapsulate the flock() system call. By encapsulating the system call
+// in a class, this allows automatic cleanup if, for some reason, an
+// exception is thrown while a lock is being held.
+//
+/////////////////////////////////////////////////////////////////////////////
+
+class FileLock : public ExitTrap {
+
+ void cleanup();
+ void forked();
+
+ int fd;
+public:
+ FileLock();
+ virtual ~FileLock();
+ void Lock(const char *);
+ void UnLock();
+
+static void do_filelock(int);
+} ;
+
+#endif