Re: [PATCH v3 0/3] nolibc: Add dirfd()

From: linux

Date: Sun Nov 01 2026 - 21:28:44 EST


On 2026-10-31 13:29:57+0900, Daniel Palmer wrote:
> Add dirfd() to convert a DIR back to an fd for functions like fstatat()
> that take an fd.
>
> Change log:
> v3 - Split the internal helper into its own commit.
> - test: just stat one child instead of all of them
> - According to POSIX (https://man7.org/linux/man-pages/man3/dirfd.3.html) errno
> should be EINVAL on failure, so closedir() is now untouched as it is setting EBADF.
> This makes the diff a little cleaner too.
> - Replace i with fd in some places so isn't confused with -1.
> - Due to all of the changes I didn't add trailers from v2.
> v2 - Fix the name of the dirfd helper, I debated over removing the helper
> as suggested by Thomas but it seems right to have the logic in a single
> place.
> Add test a basic test to make sure dirfd() actually does convert back
> to the expected fd and using dirfd() with fstatat().
>
> Daniel Palmer (3):
> tools/nolibc: Add internal __nolibc_dirfd() helper
> tools/nolibc: Add dirfd()
> selftests/nolibc: Add test for dirfd()

Applied, thanks!

Note: Now I hate that we sometime override readdir_r() for the selftests.
I tried to enable your tests for non-nolibc builds but was running into
EINVAL errors and was wondering where these came from. I'll drop that
local definition and just disable the deprecation warnings.

> tools/include/nolibc/dirent.h | 37 ++++++++++++++----
> tools/testing/selftests/nolibc/nolibc-test.c | 40 ++++++++++++++++++++
> 2 files changed, 70 insertions(+), 7 deletions(-)
>
> --
> 2.53.0
>