exp2l: Work around a NetBSD 10.0/i386 bug.
[gnulib.git] / lib / dirfd.c
blobafcf382e301c8755463bd8035251eafb6ca5d172
1 /* dirfd.c -- return the file descriptor associated with an open DIR*
3 Copyright (C) 2001, 2006, 2008-2024 Free Software Foundation, Inc.
5 This file is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as
7 published by the Free Software Foundation; either version 2.1 of the
8 License, or (at your option) any later version.
10 This file is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public License
16 along with this program. If not, see <https://www.gnu.org/licenses/>. */
18 /* Written by Jim Meyering. */
20 #include <config.h>
22 #include <dirent.h>
23 #include <errno.h>
25 #if GNULIB_defined_DIR
26 # include "dirent-private.h"
27 #endif
29 int
30 dirfd (DIR *dir_p)
32 #if GNULIB_defined_DIR
33 int fd = dir_p->fd_to_close;
34 if (fd == -1)
35 errno = EINVAL;
36 return fd;
37 #else
38 int fd = DIR_TO_FD (dir_p);
39 if (fd == -1)
40 errno = ENOTSUP;
42 return fd;
43 #endif