} else {
dir = fdopendir(fd); // Takes over ownership of fd.
if (dir == nullptr) {
- perror("fdopendir");
- exit(1);
+ // fdopendir() wants to fstat() the fd to verify that it's indeed
+ // a directory, which can seemingly fail on at least CIFS filesystems
+ // if the server feels like it. We treat this as if we had an error
+ // on opening it, ie., ignore the directory.
+ close(fd);
+ return 0;
}
dirent *de;
if (getrlimit(RLIMIT_NOFILE, &rlim) == -1) {
fprintf(stderr, "Hint: Try `ulimit -n 131072' or similar.\n");
} else {
- fprintf(stderr, "Hint: Try `ulimit -n %lu' or similar (current limit is %lu).\n",
- rlim.rlim_cur * 2, rlim.rlim_cur);
+ fprintf(stderr, "Hint: Try `ulimit -n %" PRIu64 " or similar (current limit is %" PRIu64 ").\n",
+ static_cast<uint64_t>(rlim.rlim_cur * 2), static_cast<uint64_t>(rlim.rlim_cur));
}
exit(1);
}