svn commit: samba r19539 - in branches/SAMBA_4_0/source: lib/util smbd

jelmer at samba.org jelmer at samba.org
Fri Nov 3 01:49:20 GMT 2006


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



More information about the samba-cvs mailing list