aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2012-07-26 16:43:36 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2012-07-26 16:43:36 +0400
commit2e615083e475c7390c667695b9e659fa5ba4da5f (patch)
tree2daf15c394a5e2c4fa9209ebed3c371419bfb522
parent0d35a8f9cb4942e84d3e26ca4d010393a56e2904 (diff)
downloadrspamd-2e615083e475c7390c667695b9e659fa5ba4da5f.tar.gz
rspamd-2e615083e475c7390c667695b9e659fa5ba4da5f.zip
Fix build on FreeBSD 9.1 and Current. Thanks to Anton Yuzjaninov for testing.
-rw-r--r--CMakeLists.txt1
-rw-r--r--config.h.in2
-rw-r--r--src/util.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2ffe3ae30..d01a66722 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -667,6 +667,7 @@ FIND_LIBRARY(LIBUTIL_LIBRARY NAMES util PATHS PATH_SUFFIXES lib64 lib
IF(LIBUTIL_LIBRARY)
LIST(APPEND CMAKE_REQUIRED_LIBRARIES util)
CHECK_FUNCTION_EXISTS(pidfile_open HAVE_PIDFILE)
+ CHECK_FUNCTION_EXISTS(pidfile_fileno HAVE_PIDFILE_FILENO)
FIND_FILE(HAVE_LIBUTIL_H NAMES libutil.h PATHS /usr/include
/opt/include
diff --git a/config.h.in b/config.h.in
index c1ac287cb..91c1277ee 100644
--- a/config.h.in
+++ b/config.h.in
@@ -104,6 +104,8 @@
#cmakedefine HAVE_PIDFILE 1
+#cmakedefine HAVE_PIDFILE_FILENO 1
+
#cmakedefine HAVE_SETPROCTITLE 1
#cmakedefine HAVE_GETPAGESIZE 1
diff --git a/src/util.c b/src/util.c
index ab81a28a5..a6c56ea95 100644
--- a/src/util.c
+++ b/src/util.c
@@ -408,7 +408,11 @@ write_pid (struct rspamd_main *main)
if (main->is_privilleged) {
/* Force root user as owner of pid file */
+#ifdef HAVE_PIDFILE_FILENO
+ if (fchown (pidfile_fileno (main->pfh), 0, 0) == -1) {
+#else
if (fchown (main->pfh->pf_fd, 0, 0) == -1) {
+#endif
msg_err ("cannot chown of pidfile %s to 0:0 user", main->cfg->pid_file);
}
}