Author: jelmer
Date: 2006-11-03 01:49:19 +0000 (Fri, 03 Nov 2006)
New Revision: 19539

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19539

Log:
Move pidfile to smbd/

Added:
   branches/SAMBA_4_0/source/smbd/pidfile.c
Removed:
   branches/SAMBA_4_0/source/lib/util/pidfile.c
Modified:
   branches/SAMBA_4_0/source/lib/util/config.mk
   branches/SAMBA_4_0/source/smbd/config.mk
   branches/SAMBA_4_0/source/smbd/server.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/util/config.mk
===================================================================
--- branches/SAMBA_4_0/source/lib/util/config.mk        2006-11-03 00:34:52 UTC 
(rev 19538)
+++ branches/SAMBA_4_0/source/lib/util/config.mk        2006-11-03 01:49:19 UTC 
(rev 19539)
@@ -28,13 +28,9 @@
                idtree.o \
                module.o
 PUBLIC_DEPENDENCIES = \
-               LIBCRYPTO LIBTALLOC \
+               LIBTALLOC LIBCRYPTO \
                SOCKET_WRAPPER EXT_NSL
 
-[SUBSYSTEM::PIDFILE]
-PRIVATE_PROTO_HEADER = pidfile.h
-OBJ_FILES = pidfile.o
-
 [SUBSYSTEM::UNIX_PRIVS]
 PRIVATE_PROTO_HEADER = unix_privs.h
 OBJ_FILES = unix_privs.o

Deleted: branches/SAMBA_4_0/source/lib/util/pidfile.c
===================================================================
--- branches/SAMBA_4_0/source/lib/util/pidfile.c        2006-11-03 00:34:52 UTC 
(rev 19538)
+++ branches/SAMBA_4_0/source/lib/util/pidfile.c        2006-11-03 01:49:19 UTC 
(rev 19539)
@@ -1,125 +0,0 @@
-/* this code is broken - there is a race condition with the unlink (tridge) */
-
-/* 
-   Unix SMB/CIFS implementation.
-   pidfile handling
-   Copyright (C) Andrew Tridgell 1998
-   
-   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
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   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.
-*/
-
-#include "includes.h"
-#include "system/filesys.h"
-
-#ifndef O_NONBLOCK
-#define O_NONBLOCK
-#endif
-
-/**
- * @file
- * @brief Pid file handling
- */
-
-/**
- * return the pid in a pidfile. return 0 if the process (or pidfile)
- * does not exist 
- */
-_PUBLIC_ pid_t pidfile_pid(const char *name)
-{
-       int fd;
-       char pidstr[20];
-       pid_t ret;
-       char *pidFile;
-
-       asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name);
-
-       fd = open(pidFile, O_NONBLOCK | O_RDONLY, 0644);
-
-       if (fd == -1) {
-               SAFE_FREE(pidFile);
-               return 0;
-       }
-
-       ZERO_STRUCT(pidstr);
-
-       if (read(fd, pidstr, sizeof(pidstr)-1) <= 0) {
-               goto noproc;
-       }
-
-       ret = (pid_t)atoi(pidstr);
-       
-       if (!process_exists(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 */
-               goto noproc;
-       }
-
-       close(fd);
-       SAFE_FREE(pidFile);
-       return ret;
-
- noproc:
-       close(fd);
-       unlink(pidFile);
-       SAFE_FREE(pidFile);
-       return 0;
-}
-
-/**
- * create a pid file in the pid directory. open it and leave it locked 
- */
-void pidfile_create(const char *name)
-{
-       int     fd;
-       char    buf[20];
-       char *pidFile;
-       pid_t pid;
-
-       asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name);
-
-       pid = pidfile_pid(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));
-               exit(1);
-       }
-
-       fd = open(pidFile, O_NONBLOCK | O_CREAT | O_WRONLY | O_EXCL, 0644);
-       if (fd == -1) {
-               DEBUG(0,("ERROR: can't open %s: Error was %s\n", pidFile, 
-                        strerror(errno)));
-               exit(1);
-       }
-
-       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);
-       }
-
-       memset(buf, 0, sizeof(buf));
-       slprintf(buf, sizeof(buf) - 1, "%u\n", (unsigned int) getpid());
-       if (write(fd, buf, strlen(buf)) != (ssize_t)strlen(buf)) {
-               DEBUG(0,("ERROR: can't write to file %s: %s\n", 
-                        pidFile, strerror(errno)));
-               exit(1);
-       }
-
-       /* Leave pid file open & locked for the duration... */
-       SAFE_FREE(pidFile);
-}

Modified: branches/SAMBA_4_0/source/smbd/config.mk
===================================================================
--- branches/SAMBA_4_0/source/smbd/config.mk    2006-11-03 00:34:52 UTC (rev 
19538)
+++ branches/SAMBA_4_0/source/smbd/config.mk    2006-11-03 01:49:19 UTC (rev 
19539)
@@ -23,6 +23,10 @@
 # End SUBSYSTEM SERVER
 #######################
 
+[SUBSYSTEM::PIDFILE]
+OBJ_FILES = pidfile.o
+PUBLIC_PROTO_HEADER = pidfile.h
+
 #################################
 # Start BINARY smbd
 [BINARY::smbd]
@@ -35,8 +39,8 @@
                service \
                LIBSAMBA-CONFIG \
                LIBSAMBA-UTIL \
+               POPT_SAMBA \
                PIDFILE \
-               POPT_SAMBA \
                LIBPOPT \
                gensec \
                registry \

Copied: branches/SAMBA_4_0/source/smbd/pidfile.c (from rev 19519, 
branches/SAMBA_4_0/source/lib/util/pidfile.c)
===================================================================
--- branches/SAMBA_4_0/source/lib/util/pidfile.c        2006-10-31 19:06:46 UTC 
(rev 19519)
+++ branches/SAMBA_4_0/source/smbd/pidfile.c    2006-11-03 01:49:19 UTC (rev 
19539)
@@ -0,0 +1,121 @@
+/* this code is broken - there is a race condition with the unlink (tridge) */
+
+/* 
+   Unix SMB/CIFS implementation.
+   pidfile handling
+   Copyright (C) Andrew Tridgell 1998
+   
+   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
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   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.
+*/
+
+#include "includes.h"
+#include "system/filesys.h"
+
+/**
+ * @file
+ * @brief Pid file handling
+ */
+
+/**
+ * return the pid in a pidfile. return 0 if the process (or pidfile)
+ * does not exist 
+ */
+pid_t pidfile_pid(const char *name)
+{
+       int fd;
+       char pidstr[20];
+       pid_t ret;
+       char *pidFile;
+
+       asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name);
+
+       fd = open(pidFile, O_NONBLOCK | O_RDONLY, 0644);
+
+       if (fd == -1) {
+               SAFE_FREE(pidFile);
+               return 0;
+       }
+
+       ZERO_STRUCT(pidstr);
+
+       if (read(fd, pidstr, sizeof(pidstr)-1) <= 0) {
+               goto noproc;
+       }
+
+       ret = (pid_t)atoi(pidstr);
+       
+       if (!process_exists(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 */
+               goto noproc;
+       }
+
+       close(fd);
+       SAFE_FREE(pidFile);
+       return ret;
+
+ noproc:
+       close(fd);
+       unlink(pidFile);
+       SAFE_FREE(pidFile);
+       return 0;
+}
+
+/**
+ * create a pid file in the pid directory. open it and leave it locked 
+ */
+void pidfile_create(const char *name)
+{
+       int     fd;
+       char    buf[20];
+       char *pidFile;
+       pid_t pid;
+
+       asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name);
+
+       pid = pidfile_pid(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));
+               exit(1);
+       }
+
+       fd = open(pidFile, O_NONBLOCK | O_CREAT | O_WRONLY | O_EXCL, 0644);
+       if (fd == -1) {
+               DEBUG(0,("ERROR: can't open %s: Error was %s\n", pidFile, 
+                        strerror(errno)));
+               exit(1);
+       }
+
+       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);
+       }
+
+       memset(buf, 0, sizeof(buf));
+       slprintf(buf, sizeof(buf) - 1, "%u\n", (unsigned int) getpid());
+       if (write(fd, buf, strlen(buf)) != (ssize_t)strlen(buf)) {
+               DEBUG(0,("ERROR: can't write to file %s: %s\n", 
+                        pidFile, strerror(errno)));
+               exit(1);
+       }
+
+       /* Leave pid file open & locked for the duration... */
+       SAFE_FREE(pidFile);
+}

Modified: branches/SAMBA_4_0/source/smbd/server.c
===================================================================
--- branches/SAMBA_4_0/source/smbd/server.c     2006-11-03 00:34:52 UTC (rev 
19538)
+++ branches/SAMBA_4_0/source/smbd/server.c     2006-11-03 01:49:19 UTC (rev 
19539)
@@ -38,7 +38,7 @@
 #include "smbd/process_model.h"
 #include "smbd/service.h"
 #include "passdb/secrets.h"
-#include "lib/util/pidfile.h"
+#include "smbd/pidfile.h"
 
 /*
   recursively delete a directory tree

Reply via email to