summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2017-09-09 12:06:59 -0400
committerTavian Barnes <tavianator@tavianator.com>2017-09-09 12:06:59 -0400
commit500892f115aea9788da7649b59baaea38729aacf (patch)
treeb4cdf6a5ad5348ab77e2164d125fc7fc726a04e3 /eval.c
parent55470cc8835ef774bf7defa9a4b319c8fa9d2f4b (diff)
downloadbfs-500892f115aea9788da7649b59baaea38729aacf.tar.xz
Try /proc/self/fd before /dev/fd
On Solaris, /proc/self/fd is dynamic while /dev/fd is static.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index a387bdc..6c25e18 100644
--- a/eval.c
+++ b/eval.c
@@ -1147,9 +1147,12 @@ static int infer_fdlimit(const struct cmdline *cmdline) {
// 3 for std{in,out,err}
int nopen = 3 + cmdline->nopen_files;
- // Check /dev/fd for the current number of open fds, if possible (we may
- // have inherited more than just the standard ones)
- DIR *dir = opendir("/dev/fd");
+ // Check /proc/self/fd for the current number of open fds, if possible
+ // (we may have inherited more than just the standard ones)
+ DIR *dir = opendir("/proc/self/fd");
+ if (!dir) {
+ dir = opendir("/dev/fd");
+ }
if (dir) {
// Account for 'dir' itself
nopen = -1;