2004-12-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* pid_output.c: (pid_output_lock) Eliminate static function, and just
use the #ifdef to decide which version of the function to include.
This eliminates a compilation problem with gcc4. And fix the
non-fcntl version so that it actually compiles. Exit with
status 1 instead of -1 on error.
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 22f60c2..a91901c 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,11 @@
+2004-12-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * pid_output.c: (pid_output_lock) Eliminate static function, and just
+ use the #ifdef to decide which version of the function to include.
+ This eliminates a compilation problem with gcc4. And fix the
+ non-fcntl version so that it actually compiles. Exit with
+ status 1 instead of -1 on error.
+
2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* sigevent.c: (trap_default_signals) Ignore SIGPIPE instead of exiting.
diff --git a/lib/pid_output.c b/lib/pid_output.c
index 11e1243..a098c63 100644
--- a/lib/pid_output.c
+++ b/lib/pid_output.c
@@ -25,13 +25,14 @@
#include <log.h>
#include "version.h"
+#ifndef HAVE_FCNTL
+
pid_t
pid_output (const char *path)
{
-#ifndef HAVE_FCNTL
FILE *fp;
pid_t pid;
- mask_t oldumask;
+ mode_t oldumask;
pid = getpid();
@@ -42,20 +43,20 @@
fprintf (fp, "%d\n", (int) pid);
fclose (fp);
umask(oldumask);
- return -1;
+ return pid;
}
+ /* XXX Why do we continue instead of exiting? This seems incompatible
+ with the behavior of the fcntl version below. */
+ zlog_warn("Can't fopen pid lock file %s (%s), continuing",
+ path, safe_strerror(errno));
umask(oldumask);
- return pid;
-#else
- static pid_t pid_output_lock (const char *);
-
- return pid_output_lock(path);
-#endif /* HAVE_FCNTL */
+ return -1;
}
-#ifdef HAVE_FCNTL
-static pid_t
-pid_output_lock (const char *path)
+#else /* HAVE_FCNTL */
+
+pid_t
+pid_output (const char *path)
{
int tmp;
int fd;
@@ -68,12 +69,12 @@
oldumask = umask(0777 & ~LOGFILE_MASK);
fd = open (path, O_RDWR | O_CREAT, LOGFILE_MASK);
- if (fd < 0)
- {
- zlog_err( "Can't creat pid lock file %s (%s), exit",
- path, safe_strerror(errno));
+ if (fd < 0)
+ {
+ zlog_err("Can't create pid lock file %s (%s), exiting",
+ path, safe_strerror(errno));
umask(oldumask);
- exit (-1);
+ exit(1);
}
else
{
@@ -87,8 +88,8 @@
if (fcntl(fd, F_SETLK, &lock) < 0)
{
- zlog_err("Could not lock pid_file %s, exit", path);
- exit (-1);
+ zlog_err("Could not lock pid_file %s, exiting", path);
+ exit(1);
}
sprintf (buf, "%d\n", (int) pid);
@@ -102,4 +103,5 @@
}
return pid;
}
+
#endif /* HAVE_FCNTL */