]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/mach/hurd/dirfd.c
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / mach / hurd / dirfd.c
CommitLineData
6d52618b 1/* dirfd -- Return the file descriptor used by a DIR stream. Hurd version.
04277e02 2 Copyright (C) 1995-2019 Free Software Foundation, Inc.
6d52618b 3 This file is part of the GNU C Library.
22a1292a 4
6d52618b 5 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
22a1292a 9
6d52618b
UD
10 The GNU C Library 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 GNU
41bdb6e2 13 Lesser General Public License for more details.
22a1292a 14
41bdb6e2 15 You should have received a copy of the GNU Lesser General Public
59ba27a6 16 License along with the GNU C Library; if not, see
5a82c748 17 <https://www.gnu.org/licenses/>. */
22a1292a
RM
18
19#include <dirent.h>
20#include <dirstream.h>
f0bf9cb9
RM
21#include <hurd/fd.h>
22#include <errno.h>
22a1292a
RM
23
24int
2c7bbfaf 25__dirfd (DIR *dirp)
22a1292a
RM
26{
27 int fd;
802ca5a5
ST
28
29 HURD_CRITICAL_BEGIN;
22a1292a
RM
30 __mutex_lock (&_hurd_dtable_lock);
31 for (fd = 0; fd < _hurd_dtablesize; ++fd)
32 if (_hurd_dtable[fd] == dirp->__fd)
33 break;
34 if (fd == _hurd_dtablesize)
35 {
f0bf9cb9 36 errno = EINVAL;
22a1292a
RM
37 fd = -1;
38 }
39 __mutex_unlock (&_hurd_dtable_lock);
802ca5a5 40 HURD_CRITICAL_END;
22a1292a
RM
41
42 return fd;
43}
2c7bbfaf
ST
44
45weak_alias (__dirfd, dirfd)
c120981d 46libc_hidden_def (dirfd)