changeset 2246:f16e174e1c24 HEAD

don't close dotlock fd if it's given as -1
author Timo Sirainen <tss@iki.fi>
date Mon, 28 Jun 2004 19:44:38 +0300
parents 95fe82bbda7a
children 2d51bb58a070
files src/lib/file-dotlock.c src/lib/file-dotlock.h
diffstat 2 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/file-dotlock.c	Mon Jun 28 19:13:59 2004 +0300
+++ b/src/lib/file-dotlock.c	Mon Jun 28 19:44:38 2004 +0300
@@ -487,9 +487,11 @@
 			return -1;
 		}
 	}
-	if (close(fd) < 0) {
-		i_error("close(%s) failed: %m", lock_path);
-		return -1;
+	if (fd != -1) {
+		if (close(fd) < 0) {
+			i_error("close(%s) failed: %m", lock_path);
+			return -1;
+		}
 	}
 
 	if (verify_owner) {
--- a/src/lib/file-dotlock.h	Mon Jun 28 19:13:59 2004 +0300
+++ b/src/lib/file-dotlock.h	Mon Jun 28 19:44:38 2004 +0300
@@ -47,8 +47,9 @@
 		      int (*callback)(unsigned int secs_left, int stale,
 				      void *context),
 		      void *context);
-/* Replaces path with path.lock file. Closes given fd. If verify_owner is TRUE,
-   it checks that lock file hasn't been overwritten before renaming. */
+/* Replaces path with path.lock file. If verify_owner is TRUE, it checks that
+   lock file hasn't been overwritten before renaming. Closes given fd, unless
+   it's given as -1 in which case verify_owner must be FALSE. */
 int file_dotlock_replace(const char *path, const char *lock_suffix,
 			 int fd, int verify_owner);
 /* Like file_unlock_dotlock(). Closes given fd. */