]> git.sur5r.net Git - bacula/bacula/commitdiff
Add support for fcntl(fd, F_CLOSEM) to close filedescriptors.
authorMarco van Wieringen <mvw@planets.elm.net>
Thu, 19 Apr 2012 12:05:42 +0000 (14:05 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:50:38 +0000 (14:50 +0200)
bacula/autoconf/configure.in
bacula/src/lib/daemon.c

index 1e11daae260e0e2a6c31fe496c0f442921f95309..b6a9fde2e21a5fd028b3dba946dd47fe93cd9a5c 100644 (file)
@@ -2347,6 +2347,13 @@ AC_CHECK_FUNCS( \
    [echo 'configure: cannot find needed function.'; exit 1]
 )
 
+AC_CHECK_DECL(
+    F_CLOSEM,
+    AC_DEFINE(HAVE_FCNTL_F_CLOSEM),
+    ,
+    [#include <fcntl.h>]
+)
+
 AC_CHECK_FUNC(closefrom, [AC_DEFINE(HAVE_CLOSEFROM, 1, [Define to 1 if you have the 'closefrom' function.])])
 AC_CHECK_FUNCS(getpagesize, [AC_DEFINE(HAVE_GETPAGESIZE, 1, [Set if have getpagesize])])
 AC_CHECK_FUNCS(malloc_trim, [AC_DEFINE(HAVE_MALLOC_TRIM, 1, [Set if have malloc_trim])])
index e736b362179d44391226c9fb4340c7a70bbcec41..72b3365caaa7cabba83aa51942e72f771df251c3 100644 (file)
@@ -77,7 +77,15 @@ daemon_start()
       low_fd = 2;                     /* don't close debug output */
    }
 
-#ifdef HAVE_CLOSEFROM
+#if defined(HAVE_FCNTL_F_CLOSEM)
+   /*
+    * fcntl(fd, F_CLOSEM) needs the minimum filedescriptor
+    * to close. the current code sets the last one to keep
+    * open. So increment it with 1 and use that as argument.
+    */
+   low_fd++;
+   fcntl(low_fd, F_CLOSEM);
+#elif defined(HAVE_CLOSEFROM)
    /*
     * closefrom needs the minimum filedescriptor to close.
     * the current code sets the last one to keep open.