/* Define to 1 if you have the `chflags' function. */
#undef HAVE_CHFLAGS
+/* Define to 1 if you have the 'closefrom' function. */
+#undef HAVE_CLOSEFROM
+
/* Set if Bacula conio support enabled */
#undef HAVE_CONIO
[echo 'configure: cannot find needed function.'; exit 1]
)
+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])])
{
#if !defined(HAVE_WIN32)
int i;
+ int fd;
pid_t cpid;
mode_t oldmask;
#ifdef DEVELOPER
if (debug_level > 0) {
low_fd = 2; /* don't close debug output */
}
+
+#ifdef HAVE_CLOSEFROM
+ /*
+ * closefrom 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++;
+ closefrom(low_fd);
+#else
for (i=sysconf(_SC_OPEN_MAX)-1; i > low_fd; i--) {
close(i);
}
+#endif
/* Move to root directory. For debug we stay
* in current directory so dumps go there.
* send total garbage to our socket.
*
*/
- int fd;
fd = open("/dev/null", O_RDONLY, 0644);
if (fd > 2) {
close(fd);