X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=updatedb.cpp;h=17067b8d0d10e705048f7d76ab2cc0081a94027e;hb=654a776cf218202dd10ccfba8f0be46016b1edde;hp=8435a48b56f40ccaecf510913e15291050f336a9;hpb=a22ae24d0cba97e00ff22e9f5543b094c32431e3;p=plocate diff --git a/updatedb.cpp b/updatedb.cpp index 8435a48..17067b8 100644 --- a/updatedb.cpp +++ b/updatedb.cpp @@ -742,6 +742,15 @@ int main(int argc, char **argv) // and can set whatever we want). 128k should be ample for most setups. rlimit rlim; if (getrlimit(RLIMIT_NOFILE, &rlim) != -1) { + // Even root cannot increase rlim_cur beyond rlim_max, + // so we need to try to increase rlim_max first. + // Ignore errors, though. + if (rlim.rlim_max < 131072) { + rlim.rlim_max = 131072; + setrlimit(RLIMIT_NOFILE, &rlim); + getrlimit(RLIMIT_NOFILE, &rlim); + } + rlim_t wanted = std::max(rlim.rlim_cur, 131072); rlim.rlim_cur = std::min(wanted, rlim.rlim_max); setrlimit(RLIMIT_NOFILE, &rlim); // Ignore errors.