Add debugs to functions. Add pidfile_unlink().
authorJeremy Allison <jra@samba.org>
Thu, 19 Jul 2012 23:08:16 +0000 (16:08 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 19 Jul 2012 23:08:16 +0000 (16:08 -0700)
lib/util/pidfile.c
lib/util/pidfile.h

index ac8ff8a0c3fde0f9a139a3a4c4111e983232c30f..88463711f94f4a6f4cf1f0a481c80dda985fb27b 100644 (file)
@@ -58,24 +58,32 @@ pid_t pidfile_pid(const char *piddir, const char *name)
 
        ret = (pid_t)atoi(pidstr);
        if (ret <= 0) {
+               DEBUG(1, ("Could not parse contents of pidfile %s\n",
+                       pidFile));
                goto noproc;
        }
        
        if (!process_exists_by_pid(ret)) {
+               DEBUG(10, ("Process with PID=%d does not exist.\n", (int)ret));
                goto noproc;
        }
 
        if (fcntl_lock(fd,F_SETLK,0,1,F_RDLCK)) {
                /* we could get the lock - it can't be a Samba process */
+               DEBUG(10, ("Process with PID=%d is not a Samba process.\n",
+                       (int)ret));
                goto noproc;
        }
 
        close(fd);
        SAFE_FREE(pidFile);
+       DEBUG(10, ("Process with PID=%d is running.\n", (int)ret));
        return ret;
 
  noproc:
        close(fd);
+       DEBUG(10, ("Deleting %s, since %d is not a Samba process.\n", pidFile,
+               (int)ret));
        unlink(pidFile);
        SAFE_FREE(pidFile);
        return 0;
@@ -129,3 +137,19 @@ void pidfile_create(const char *piddir, const char *name)
        /* Leave pid file open & locked for the duration... */
        SAFE_FREE(pidFile);
 }
+
+void pidfile_unlink(const char *piddir, const char *name)
+{
+       int ret;
+       char *pidFile = NULL;
+
+       if (asprintf(&pidFile, "%s/%s.pid", piddir, name) < 0) {
+               DEBUG(0,("ERROR: Out of memory\n"));
+               exit(1);
+       }
+       ret = unlink(pidFile);
+       if (ret == -1) {
+               DEBUG(0,("Failed to delete pidfile %s. Error was %s\n",
+                       pidFile, strerror(errno)));
+       }
+}
index 92a277d820b4dfc46b0bbb75872b9ea59b3e2462..d504f526a5cee2aa11a0f33e2443ee2630e9e102 100644 (file)
@@ -22,5 +22,6 @@
 
 pid_t pidfile_pid(const char *piddir, const char *name);
 void pidfile_create(const char *piddir, const char *program_name);
+void pidfile_unlink(const char *piddir, const char *program_name);
 
 #endif