]> diplodocus.org Git - nmh/blobdiff - sbr/lock_file.c
Removed unnecessary warning about missing semicolon.
[nmh] / sbr / lock_file.c
index 0bf82f8afc885e04d667ca98602537f6ea57e5b0..81ad04538499ee4b698acfd230c133efa0f95308 100644 (file)
  * Ruud de Rooij <ruud@debian.org>  Sun, 28 Mar 1999 15:34:03 +0200
  */
  
-#include <h/mh.h>
-#include <h/signals.h>
-#include <h/utils.h>
-#include <h/mts.h>
+#include "h/mh.h"
+#include "context_find.h"
+#include "error.h"
+#include "h/signals.h"
+#include "h/utils.h"
+#include "h/mts.h"
+#include "lock_file.h"
+#include "m_mktemp.h"
 
 #ifdef HAVE_SYS_TIME_H
 # include <sys/time.h>
@@ -88,7 +92,7 @@ static int lkopen_lockf (const char *, int, mode_t, int *);
 static int lkopen_flock (const char *, int, mode_t, int *);
 #endif /* HAVE_FLOCK */
 
-static enum locktype init_locktype(const char *);
+static enum locktype init_locktype(const char *) PURE;
 
 static int lkopen_dot (const char *, int, mode_t, int *);
 static void lkclose_dot (int, const char *);
@@ -131,7 +135,8 @@ lkopendata(const char *file, int access, mode_t mode, int *failed_to_lock)
  * Locking using the spool locking algorithm
  */
 
-int lkopenspool(const char *file, int access, mode_t mode, int *failed_to_lock)
+int
+lkopenspool(const char *file, int access, mode_t mode, int *failed_to_lock)
 {
     static bool deja_vu;
 
@@ -156,7 +161,7 @@ lkfopendata(const char *file, const char *mode, int *failed_to_lock)
     int fd;
 
     if (oflags == -1) {
-       errno = EINVAL;
+       errno = EINVAL;
        return NULL;
     }
 
@@ -180,7 +185,7 @@ lkfopenspool(const char *file, const char *mode)
     int fd;
 
     if (oflags == -1) {
-       errno = EINVAL;
+       errno = EINVAL;
        return NULL;
     }
 
@@ -210,7 +215,7 @@ lkclosedata(int fd, const char *name)
     int rc = close(fd);
 
     if (datalocktype == DOT_LOCKING)
-       lkclose_dot(fd, name);
+       lkclose_dot(fd, name);
 
     return rc;
 }
@@ -221,13 +226,13 @@ lkfclosedata(FILE *f, const char *name)
     int fd, rc;
 
     if (f == NULL)
-       return 0;
+       return 0;
     
     fd = fileno(f);
     rc = fclose(f);
 
     if (datalocktype == DOT_LOCKING)
-       lkclose_dot(fd, name);
+       lkclose_dot(fd, name);
 
     return rc;
 }
@@ -238,7 +243,7 @@ lkclosespool(int fd, const char *name)
     int rc = close(fd);
 
     if (spoollocktype == DOT_LOCKING)
-       lkclose_dot(fd, name);
+       lkclose_dot(fd, name);
 
     return rc;
 }
@@ -249,13 +254,13 @@ lkfclosespool(FILE *f, const char *name)
     int fd, rc;
 
     if (f == NULL)
-       return 0;
+       return 0;
     
     fd = fileno(f);
     rc = fclose(f);
 
     if (spoollocktype == DOT_LOCKING)
-       lkclose_dot(fd, name);
+       lkclose_dot(fd, name);
 
     return rc;
 }
@@ -296,23 +301,23 @@ lkopen (const char *file, int access, mode_t mode, enum locktype ltype,
     switch (ltype) {
 
     case FCNTL_LOCKING:
-       return lkopen_fcntl(file, access, mode, failed_to_lock);
+       return lkopen_fcntl(file, access, mode, failed_to_lock);
 
     case DOT_LOCKING:
-       return lkopen_dot(file, access, mode, failed_to_lock);
+       return lkopen_dot(file, access, mode, failed_to_lock);
 
 #ifdef HAVE_FLOCK
     case FLOCK_LOCKING:
-       return lkopen_flock(file, access, mode, failed_to_lock);
+       return lkopen_flock(file, access, mode, failed_to_lock);
 #endif /* HAVE_FLOCK */
 
 #ifdef HAVE_LOCKF
     case LOCKF_LOCKING:
-       return lkopen_lockf(file, access, mode, failed_to_lock);
+       return lkopen_lockf(file, access, mode, failed_to_lock);
 #endif /* HAVE_FLOCK */
 
     default:
-       adios(NULL, "Internal locking error: unsupported lock type used!");
+       die("Internal locking error: unsupported lock type used!");
     }
 
     return -1;
@@ -354,7 +359,7 @@ lkopen_fcntl(const char *file, int access, mode_t mode, int *failed_to_lock)
      */
 
     for (i = 0; i < LOCK_RETRIES; i++) {
-       if ((fd = open(file, access, mode)) == -1)
+       if ((fd = open(file, access, mode)) == -1)
            return -1;
 
        flk.l_start = 0;
@@ -392,10 +397,10 @@ lkopen_flock(const char *file, int access, mode_t mode, int *failed_to_lock)
      */
 
     locktype = (((access & O_ACCMODE) == O_RDONLY) ? LOCK_SH : LOCK_EX) |
-                                                       LOCK_NB;
+                                                       LOCK_NB;
 
     for (i = 0; i < LOCK_RETRIES; i++) {
-       if ((fd = open(file, access, mode)) == -1)
+       if ((fd = open(file, access, mode)) == -1)
            return -1;
 
        if (flock(fd, locktype) != -1)
@@ -436,12 +441,12 @@ lkopen_lockf(const char *file, int access, mode_t mode, int *failed_to_lock)
     access &= ~O_APPEND;
 
     if ((access & O_ACCMODE) == O_RDONLY) {
-       access &= ~O_RDONLY;
+       access &= ~O_RDONLY;
        access |= O_RDWR;
     }
 
     for (i = 0; i < LOCK_RETRIES; i++) {
-       if ((fd = open(file, access, mode)) == -1)
+       if ((fd = open(file, access, mode)) == -1)
            return -1;
 
        if (lockf(fd, F_TLOCK, 0) != -1) {
@@ -449,7 +454,7 @@ lkopen_lockf(const char *file, int access, mode_t mode, int *failed_to_lock)
             * Seek to end if requested
             */
            if (saved_access & O_APPEND) {
-               lseek(fd, 0, SEEK_END);
+               lseek(fd, 0, SEEK_END);
            }
            return fd;
        }
@@ -520,6 +525,7 @@ lkopen_dot (const char *file, int access, mode_t mode, int *failed_to_lock)
             lockname (file, &lkinfo, 1);
        }
 
+        close(fd);
         *failed_to_lock = 1;
         return -1;
     }
@@ -573,7 +579,7 @@ lockit (struct lockinfo *li)
     fd = link(tmpfile, curlock);
     (void) m_unlink(tmpfile);
 
-    return (fd == -1 ? -1 : 0);
+    return fd == -1 ? -1 : 0;
 }
 #endif /* HAVE_LIBLOCKFILE */
 
@@ -626,7 +632,9 @@ lockname (const char *file, struct lockinfo *li, int isnewlock)
 
     snprintf (bp, sizeof(li->curlock) - bplen, "%s.lock", cp);
 
-#if !defined(HAVE_LIBLOCKFILE)
+#if defined(HAVE_LIBLOCKFILE)
+    NMH_UNUSED(isnewlock);
+#else
     /*
      * If this is for a new lock, create a name for
      * the temporary lock file for lockit()
@@ -739,26 +747,26 @@ static enum locktype
 init_locktype(const char *lockname)
 {
     if (strcasecmp(lockname, "fcntl") == 0) {
-       return FCNTL_LOCKING;
+       return FCNTL_LOCKING;
     }
     if (strcasecmp(lockname, "lockf") == 0) {
 #ifdef HAVE_LOCKF
        return LOCKF_LOCKING;
 #else /* ! HAVE_LOCKF */
-       adios(NULL, "lockf not supported on this system");
+       die("lockf not supported on this system");
 #endif /* HAVE_LOCKF */
     }
     if (strcasecmp(lockname, "flock") == 0) {
 #ifdef HAVE_FLOCK
        return FLOCK_LOCKING;
 #else /* ! HAVE_FLOCK */
-       adios(NULL, "flock not supported on this system");
+       die("flock not supported on this system");
 #endif /* HAVE_FLOCK */
     }
     if (strcasecmp(lockname, "dot") == 0) {
-       return DOT_LOCKING;
+       return DOT_LOCKING;
     }
-    adios(NULL, "Unknown lock type: \"%s\"", lockname);
+    die("Unknown lock type: \"%s\"", lockname);
     /* NOTREACHED */
     return 0;
 }