PIDs are of type pid_t, and use %ld when reading/writing them to the pidfile.
This commit is contained in:
parent
e898b930dc
commit
5900c07fab
6 changed files with 25 additions and 42 deletions
|
@ -1,6 +1,6 @@
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
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_PREREQ(2.57)
|
||||||
AC_INIT(src/tincd.c)
|
AC_INIT(src/tincd.c)
|
||||||
|
@ -253,7 +253,7 @@ dnl Checks for library functions.
|
||||||
AC_FUNC_MEMCMP
|
AC_FUNC_MEMCMP
|
||||||
AC_FUNC_ALLOCA
|
AC_FUNC_ALLOCA
|
||||||
AC_TYPE_SIGNAL
|
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_MALLOC
|
||||||
jm_FUNC_REALLOC
|
jm_FUNC_REALLOC
|
||||||
|
|
||||||
|
|
|
@ -34,14 +34,14 @@
|
||||||
* 0 is returned if either there's no pidfile, it's empty
|
* 0 is returned if either there's no pidfile, it's empty
|
||||||
* or no pid can be read.
|
* or no pid can be read.
|
||||||
*/
|
*/
|
||||||
int read_pid (char *pidfile)
|
pid_t read_pid (char *pidfile)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
int pid;
|
long pid;
|
||||||
|
|
||||||
if (!(f=fopen(pidfile,"r")))
|
if (!(f=fopen(pidfile,"r")))
|
||||||
return 0;
|
return 0;
|
||||||
fscanf(f,"%d", &pid);
|
fscanf(f,"%ld", &pid);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return pid;
|
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
|
* 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
|
* 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... */
|
/* Amazing ! _I_ am already holding the pid file... */
|
||||||
if ((!pid) || (pid == getpid ()))
|
if ((!pid) || (pid == getpid ()))
|
||||||
|
@ -68,7 +68,7 @@ int check_pid (char *pidfile)
|
||||||
/* But... errno is usually changed only on error.. */
|
/* But... errno is usually changed only on error.. */
|
||||||
errno = 0;
|
errno = 0;
|
||||||
if (kill(pid, 0) && errno == ESRCH)
|
if (kill(pid, 0) && errno == ESRCH)
|
||||||
return(0);
|
return 0;
|
||||||
|
|
||||||
return pid;
|
return pid;
|
||||||
}
|
}
|
||||||
|
@ -78,30 +78,26 @@ int check_pid (char *pidfile)
|
||||||
* Writes the pid to the specified file. If that fails 0 is
|
* Writes the pid to the specified file. If that fails 0 is
|
||||||
* returned, otherwise the pid.
|
* returned, otherwise the pid.
|
||||||
*/
|
*/
|
||||||
int write_pid (char *pidfile)
|
pid_t write_pid (char *pidfile)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
int fd;
|
int fd;
|
||||||
int pid;
|
pid_t pid;
|
||||||
|
|
||||||
if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1)
|
if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1)
|
||||||
|| ((f = fdopen(fd, "r+")) == NULL) ) {
|
|| ((f = fdopen(fd, "r+")) == NULL) ) {
|
||||||
fprintf(stderr, "Can't open or create %s.\n", pidfile);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_FLOCK
|
#ifdef HAVE_FLOCK
|
||||||
if (flock(fd, LOCK_EX|LOCK_NB) == -1) {
|
if (flock(fd, LOCK_EX|LOCK_NB) == -1) {
|
||||||
fscanf(f, "%d", &pid);
|
|
||||||
fclose(f);
|
fclose(f);
|
||||||
printf("Can't lock, lock is held by pid %d.\n", pid);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pid = getpid();
|
pid = getpid();
|
||||||
if (!fprintf(f,"%d\n", pid)) {
|
if (!fprintf(f,"%ld\n", (long)pid)) {
|
||||||
printf("Can't write pid , %s.\n", strerror(errno));
|
|
||||||
close(fd);
|
close(fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -109,7 +105,6 @@ int write_pid (char *pidfile)
|
||||||
|
|
||||||
#ifdef HAVE_FLOCK
|
#ifdef HAVE_FLOCK
|
||||||
if (flock(fd, LOCK_UN) == -1) {
|
if (flock(fd, LOCK_UN) == -1) {
|
||||||
printf("Can't unlock pidfile %s, %s.\n", pidfile, strerror(errno));
|
|
||||||
close(fd);
|
close(fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
* 0 is returned if either there's no pidfile, it's empty
|
* 0 is returned if either there's no pidfile, it's empty
|
||||||
* or no pid can be read.
|
* or no pid can be read.
|
||||||
*/
|
*/
|
||||||
int read_pid (char *pidfile);
|
pid_t read_pid (char *pidfile);
|
||||||
|
|
||||||
/* check_pid
|
/* check_pid
|
||||||
*
|
*
|
||||||
|
@ -34,14 +34,14 @@ int read_pid (char *pidfile);
|
||||||
* table (using /proc) to determine if the process already exists. If
|
* table (using /proc) to determine if the process already exists. If
|
||||||
* so 1 is returned, otherwise 0.
|
* so 1 is returned, otherwise 0.
|
||||||
*/
|
*/
|
||||||
int check_pid (char *pidfile);
|
pid_t check_pid (char *pidfile);
|
||||||
|
|
||||||
/* write_pid
|
/* write_pid
|
||||||
*
|
*
|
||||||
* Writes the pid to the specified file. If that fails 0 is
|
* Writes the pid to the specified file. If that fails 0 is
|
||||||
* returned, otherwise the pid.
|
* returned, otherwise the pid.
|
||||||
*/
|
*/
|
||||||
int write_pid (char *pidfile);
|
pid_t write_pid (char *pidfile);
|
||||||
|
|
||||||
/* remove_pid
|
/* remove_pid
|
||||||
*
|
*
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
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"
|
#include "system.h"
|
||||||
|
@ -78,7 +78,7 @@ void logger(int priority, const char *format, ...) {
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
break;
|
break;
|
||||||
case LOGMODE_FILE:
|
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);
|
vfprintf(logfile, format, ap);
|
||||||
fprintf(logfile, "\n");
|
fprintf(logfile, "\n");
|
||||||
fflush(logfile);
|
fflush(logfile);
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
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"
|
#include "system.h"
|
||||||
|
@ -58,19 +58,6 @@ static void memory_full(int size)
|
||||||
|
|
||||||
/* Some functions the less gifted operating systems might lack... */
|
/* 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
|
#ifdef HAVE_MINGW
|
||||||
extern char *identname;
|
extern char *identname;
|
||||||
extern char *program_name;
|
extern char *program_name;
|
||||||
|
@ -254,7 +241,7 @@ bool init_service(void) {
|
||||||
*/
|
*/
|
||||||
static bool write_pidfile(void)
|
static bool write_pidfile(void)
|
||||||
{
|
{
|
||||||
int pid;
|
pid_t pid;
|
||||||
|
|
||||||
cp();
|
cp();
|
||||||
|
|
||||||
|
@ -262,10 +249,10 @@ static bool write_pidfile(void)
|
||||||
|
|
||||||
if(pid) {
|
if(pid) {
|
||||||
if(netname)
|
if(netname)
|
||||||
fprintf(stderr, _("A tincd is already running for net `%s' with pid %d.\n"),
|
fprintf(stderr, _("A tincd is already running for net `%s' with pid %ld.\n"),
|
||||||
netname, pid);
|
netname, (long)pid);
|
||||||
else
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,7 +270,7 @@ static bool write_pidfile(void)
|
||||||
bool kill_other(int signal)
|
bool kill_other(int signal)
|
||||||
{
|
{
|
||||||
#ifndef HAVE_MINGW
|
#ifndef HAVE_MINGW
|
||||||
int pid;
|
pid_t pid;
|
||||||
|
|
||||||
cp();
|
cp();
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
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"
|
#include "system.h"
|
||||||
|
@ -39,6 +39,7 @@
|
||||||
#include <lzo1x.h>
|
#include <lzo1x.h>
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
#include <pidfile.h>
|
||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
|
|
Loading…
Reference in a new issue