aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/utils.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2011-10-13 10:34:51 +0200
committerTobias Brunner <tobias@strongswan.org>2011-10-13 11:19:12 +0200
commit9a8fdc159a49ba82568f53cb9275b3ded092ba76 (patch)
treecd4bbd220ba63e702aa8c233cb5a07abc390ea10 /src/libstrongswan/utils.c
parentaa82ae3aa48f9090adc80818724b7aa9e8724d25 (diff)
downloadstrongswan-9a8fdc159a49ba82568f53cb9275b3ded092ba76.tar.bz2
strongswan-9a8fdc159a49ba82568f53cb9275b3ded092ba76.tar.xz
Added a replacement for closefrom (available on *BSD).
Diffstat (limited to 'src/libstrongswan/utils.c')
-rw-r--r--src/libstrongswan/utils.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/libstrongswan/utils.c b/src/libstrongswan/utils.c
index 1129ea3a6..eca613a5d 100644
--- a/src/libstrongswan/utils.c
+++ b/src/libstrongswan/utils.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2010 Tobias Brunner
+ * Copyright (C) 2008-2011 Tobias Brunner
* Copyright (C) 2005-2008 Martin Willi
* Hochschule fuer Technik Rapperswil
*
@@ -193,6 +193,25 @@ bool mkdir_p(const char *path, mode_t mode)
return TRUE;
}
+#ifndef HAVE_CLOSEFROM
+/**
+ * Described in header.
+ */
+void closefrom(int lowfd)
+{
+ int maxfd, fd;
+ maxfd = (int)sysconf(_SC_OPEN_MAX);
+ if (maxfd < 0)
+ {
+ maxfd = 256;
+ }
+ for (fd = lowfd; fd < maxfd; fd++)
+ {
+ close(fd);
+ }
+}
+#endif /* HAVE_CLOSEFROM */
+
/**
* Return monotonic time
*/