Merge branch 'master' of git://git.samba.org/samba
[kai/samba.git] / source4 / smbd / pidfile.c
index 493de66b442dcd09a7fdef056b6760dde8b35ddc..da3f363ff9ba6a688ecbbdd71ecc094d08c85a24 100644 (file)
@@ -7,7 +7,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -16,8 +16,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
  * return the pid in a pidfile. return 0 if the process (or pidfile)
  * does not exist 
  */
-pid_t pidfile_pid(const char *name)
+pid_t pidfile_pid(const char *piddir, const char *name)
 {
        int fd;
        char pidstr[20];
        pid_t ret;
        char *pidFile;
 
-       asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name);
+       asprintf(&pidFile, "%s/%s.pid", piddir, name);
 
        fd = open(pidFile, O_NONBLOCK | O_RDONLY, 0644);
 
@@ -56,7 +55,7 @@ pid_t pidfile_pid(const char *name)
 
        ret = (pid_t)atoi(pidstr);
        
-       if (!process_exists(ret)) {
+       if (!process_exists_by_pid(ret)) {
                goto noproc;
        }
 
@@ -79,16 +78,16 @@ pid_t pidfile_pid(const char *name)
 /**
  * create a pid file in the pid directory. open it and leave it locked 
  */
-void pidfile_create(const char *name)
+void pidfile_create(const char *piddir, const char *name)
 {
        int     fd;
        char    buf[20];
        char *pidFile;
        pid_t pid;
 
-       asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name);
+       asprintf(&pidFile, "%s/%s.pid", piddir, name);
 
-       pid = pidfile_pid(name);
+       pid = pidfile_pid(piddir, name);
        if (pid != 0) {
                DEBUG(0,("ERROR: %s is already running. File %s exists and process id %d is running.\n", 
                         name, pidFile, (int)pid));
@@ -102,7 +101,7 @@ void pidfile_create(const char *name)
                exit(1);
        }
 
-       if (fcntl_lock(fd,F_SETLK,0,1,F_WRLCK)==False) {
+       if (fcntl_lock(fd,F_SETLK,0,1,F_WRLCK)==false) {
                DEBUG(0,("ERROR: %s : fcntl lock of file %s failed. Error was %s\n",  
               name, pidFile, strerror(errno)));
                exit(1);