On 2025-10-19 19:18, Collin Funk wrote:
$ ulimit -n
1024
It is easy to hit this limit even if you only open file descriptors to
the parents of the file that you want to copy.
(I assume by "parents" you mean "ancestors".)
Yes, and that's why Gnulib fts doesn't do that.
int
open_deep (char const *filename, int flags, ...)
{
...> /* Loop through the patch components using openat on each
until we open FILENAME. */
return result;
That's O(N * D) if you open N files nested D deep, which is not a good
thing. We should be able to do O(N + D).
is there a reason why savewd and
mkancesdirs don't use openat + mkdirat instead of using chdir in a child
process? Do these functions just predate the *at interfaces
Yes, precisely. Some day it will be time to give up on those old
platforms, I suppose. We haven't done that yet because there hasn't been
motivation to get rid of them, or rewrite them.