From 3f8e820acbe00bdce61ab3ff06967ffa7d4af003 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 20 Sep 2004 11:31:55 +0000 Subject: [PATCH] use legacy flock() only on linux. at least on OS X flock aliases to fcntl. --- src/drv_maildir.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/drv_maildir.c b/src/drv_maildir.c index e5b73aa..8421cfd 100644 --- a/src/drv_maildir.c +++ b/src/drv_maildir.c @@ -38,6 +38,9 @@ #include #define USE_DB 1 +#ifdef __linux__ +# define LEGACY_FLOCK 1 +#endif #ifdef USE_DB #include @@ -355,11 +358,13 @@ maildir_uidval_lock( maildir_store_t *ctx ) int n; char buf[128]; +#ifdef LEGACY_FLOCK /* This is legacy only */ if (flock( ctx->uvfd, LOCK_EX ) < 0) { fprintf( stderr, "Maildir error: cannot flock UIDVALIDITY.\n" ); return DRV_BOX_BAD; } +#endif /* This (theoretically) works over NFS. Let's hope nobody else did the same in the opposite order, as we'd deadlock then. */ #if SEEK_SET != 0 @@ -384,8 +389,10 @@ maildir_uidval_unlock( maildir_store_t *ctx ) { lck.l_type = F_UNLCK; fcntl( ctx->uvfd, F_SETLK, &lck ); +#ifdef LEGACY_FLOCK /* This is legacy only */ flock( ctx->uvfd, LOCK_UN ); +#endif } static int