From 5900c07fab39d2833ea66429ad652ca49a91a508 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Mon, 6 Oct 2003 16:13:08 +0000 Subject: [PATCH] PIDs are of type pid_t, and use %ld when reading/writing them to the pidfile. --- configure.in | 4 ++-- lib/pidfile.c | 25 ++++++++++--------------- lib/pidfile.h | 6 +++--- src/logger.c | 4 ++-- src/process.c | 25 ++++++------------------- src/tincd.c | 3 ++- 6 files changed, 25 insertions(+), 42 deletions(-) diff --git a/configure.in b/configure.in index 38886115..c66adb6c 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.13.2.83 2003/08/08 22:13:50 guus Exp $ +dnl $Id: configure.in,v 1.13.2.84 2003/10/06 16:13:06 guus Exp $ AC_PREREQ(2.57) AC_INIT(src/tincd.c) @@ -253,7 +253,7 @@ dnl Checks for library functions. AC_FUNC_MEMCMP AC_FUNC_ALLOCA AC_TYPE_SIGNAL -AC_CHECK_FUNCS([asprintf daemon fchmod fcloseall flock ftime fork get_current_dir_name gettimeofday mlockall putenv random select strdup strerror strsignal strtol system unsetenv vsyslog]) +AC_CHECK_FUNCS([asprintf daemon fchmod flock ftime fork get_current_dir_name gettimeofday mlockall putenv random select strdup strerror strsignal strtol system unsetenv vsyslog]) jm_FUNC_MALLOC jm_FUNC_REALLOC diff --git a/lib/pidfile.c b/lib/pidfile.c index 368dad45..61a802f6 100644 --- a/lib/pidfile.c +++ b/lib/pidfile.c @@ -34,14 +34,14 @@ * 0 is returned if either there's no pidfile, it's empty * or no pid can be read. */ -int read_pid (char *pidfile) +pid_t read_pid (char *pidfile) { FILE *f; - int pid; + long pid; if (!(f=fopen(pidfile,"r"))) return 0; - fscanf(f,"%d", &pid); + fscanf(f,"%ld", &pid); fclose(f); return pid; } @@ -50,11 +50,11 @@ int read_pid (char *pidfile) * * Reads the pid using read_pid and looks up the pid in the process * table (using /proc) to determine if the process already exists. If - * so 1 is returned, otherwise 0. + * so the pid is returned, otherwise 0. */ -int check_pid (char *pidfile) +pid_t check_pid (char *pidfile) { - int pid = read_pid(pidfile); + pid_t pid = read_pid(pidfile); /* Amazing ! _I_ am already holding the pid file... */ if ((!pid) || (pid == getpid ())) @@ -68,7 +68,7 @@ int check_pid (char *pidfile) /* But... errno is usually changed only on error.. */ errno = 0; if (kill(pid, 0) && errno == ESRCH) - return(0); + return 0; return pid; } @@ -78,30 +78,26 @@ int check_pid (char *pidfile) * Writes the pid to the specified file. If that fails 0 is * returned, otherwise the pid. */ -int write_pid (char *pidfile) +pid_t write_pid (char *pidfile) { FILE *f; int fd; - int pid; + pid_t pid; if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1) || ((f = fdopen(fd, "r+")) == NULL) ) { - fprintf(stderr, "Can't open or create %s.\n", pidfile); return 0; } #ifdef HAVE_FLOCK if (flock(fd, LOCK_EX|LOCK_NB) == -1) { - fscanf(f, "%d", &pid); fclose(f); - printf("Can't lock, lock is held by pid %d.\n", pid); return 0; } #endif pid = getpid(); - if (!fprintf(f,"%d\n", pid)) { - printf("Can't write pid , %s.\n", strerror(errno)); + if (!fprintf(f,"%ld\n", (long)pid)) { close(fd); return 0; } @@ -109,7 +105,6 @@ int write_pid (char *pidfile) #ifdef HAVE_FLOCK if (flock(fd, LOCK_UN) == -1) { - printf("Can't unlock pidfile %s, %s.\n", pidfile, strerror(errno)); close(fd); return 0; } diff --git a/lib/pidfile.h b/lib/pidfile.h index d428d48c..152ae2c4 100644 --- a/lib/pidfile.h +++ b/lib/pidfile.h @@ -26,7 +26,7 @@ * 0 is returned if either there's no pidfile, it's empty * or no pid can be read. */ -int read_pid (char *pidfile); +pid_t read_pid (char *pidfile); /* check_pid * @@ -34,14 +34,14 @@ int read_pid (char *pidfile); * table (using /proc) to determine if the process already exists. If * so 1 is returned, otherwise 0. */ -int check_pid (char *pidfile); +pid_t check_pid (char *pidfile); /* write_pid * * Writes the pid to the specified file. If that fails 0 is * returned, otherwise the pid. */ -int write_pid (char *pidfile); +pid_t write_pid (char *pidfile); /* remove_pid * diff --git a/src/logger.c b/src/logger.c index 02f3f0f8..dec88fdc 100644 --- a/src/logger.c +++ b/src/logger.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: logger.c,v 1.1.2.11 2003/08/17 12:04:35 guus Exp $ + $Id: logger.c,v 1.1.2.12 2003/10/06 16:13:07 guus Exp $ */ #include "system.h" @@ -78,7 +78,7 @@ void logger(int priority, const char *format, ...) { fflush(stderr); break; case LOGMODE_FILE: - fprintf(logfile, "%ld %s[%d]: ", time(NULL), logident, logpid); + fprintf(logfile, "%ld %s[%ld]: ", time(NULL), logident, (long)logpid); vfprintf(logfile, format, ap); fprintf(logfile, "\n"); fflush(logfile); diff --git a/src/process.c b/src/process.c index 2050c059..a5abc936 100644 --- a/src/process.c +++ b/src/process.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: process.c,v 1.1.2.75 2003/08/22 15:07:57 guus Exp $ + $Id: process.c,v 1.1.2.76 2003/10/06 16:13:08 guus Exp $ */ #include "system.h" @@ -58,19 +58,6 @@ static void memory_full(int size) /* Some functions the less gifted operating systems might lack... */ -#ifndef HAVE_FCLOSEALL -static int fcloseall(void) -{ - fflush(stdin); - fflush(stdout); - fflush(stderr); - fclose(stdin); - fclose(stdout); - fclose(stderr); - return 0; -} -#endif - #ifdef HAVE_MINGW extern char *identname; extern char *program_name; @@ -254,7 +241,7 @@ bool init_service(void) { */ static bool write_pidfile(void) { - int pid; + pid_t pid; cp(); @@ -262,10 +249,10 @@ static bool write_pidfile(void) if(pid) { if(netname) - fprintf(stderr, _("A tincd is already running for net `%s' with pid %d.\n"), - netname, pid); + fprintf(stderr, _("A tincd is already running for net `%s' with pid %ld.\n"), + netname, (long)pid); else - fprintf(stderr, _("A tincd is already running with pid %d.\n"), pid); + fprintf(stderr, _("A tincd is already running with pid %ld.\n"), (long)pid); return false; } @@ -283,7 +270,7 @@ static bool write_pidfile(void) bool kill_other(int signal) { #ifndef HAVE_MINGW - int pid; + pid_t pid; cp(); diff --git a/src/tincd.c b/src/tincd.c index ebee1b3b..1a5677f1 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: tincd.c,v 1.10.4.88 2003/09/25 10:34:16 guus Exp $ + $Id: tincd.c,v 1.10.4.89 2003/10/06 16:13:08 guus Exp $ */ #include "system.h" @@ -39,6 +39,7 @@ #include #include +#include #include "conf.h" #include "device.h" -- 2.20.1