summaryrefslogtreecommitdiffstats
path: root/ctx.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2021-05-20 13:03:31 -0400
committerTavian Barnes <tavianator@tavianator.com>2021-05-20 16:33:17 -0400
commit69a5227098b87b048a90ceb1ca7b169c02ba151e (patch)
tree088c97c93c4f36c0d128a817dfc372704033f14a /ctx.c
parentb08424dd960c2241ce14a61c0241c90f612cd6b4 (diff)
downloadbfs-69a5227098b87b048a90ceb1ca7b169c02ba151e.tar.xz
eval: Raise RLIMIT_NOFILE if possible
This lets us keep more open FDs cached in bftw(). The limit is lowered before running -exec commands, in case they're incompatible with a high limit (e.g. due to select()).
Diffstat (limited to 'ctx.c')
-rw-r--r--ctx.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ctx.c b/ctx.c
index 72ed969..b17d148 100644
--- a/ctx.c
+++ b/ctx.c
@@ -93,6 +93,15 @@ struct bfs_ctx *bfs_ctx_new(void) {
trie_init(&ctx->files);
ctx->nfiles = 0;
+ struct rlimit rl;
+ if (getrlimit(RLIMIT_NOFILE, &rl) == 0) {
+ ctx->nofile_soft = rl.rlim_cur;
+ ctx->nofile_hard = rl.rlim_max;
+ } else {
+ ctx->nofile_soft = 1024;
+ ctx->nofile_hard = RLIM_INFINITY;
+ }
+
return ctx;
}