Linux: Move getdents64 to <dirent.h>

This matches the location of the declaration in musl.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
Florian Weimer 2019-07-29 21:02:46 +02:00
parent 354e4c1add
commit b8b3d5a14e
7 changed files with 70 additions and 8 deletions

View File

@ -1,3 +1,15 @@
2019-07-29 Florian Weimer <fweimer@redhat.com>
Linux: Move declaration of getdents64 to <dirent.h>.
* bits/dirent_ext.h: New file.
* dirent/Makefile (headers): Add bits/dirent_ext.h.
* dirent/dirent.h: Include <bits/dirent_ext.h>.
* sysdeps/unix/sysv/linux/bits/dirent_ext.h: New file.
* sysdeps/unix/sysv/linux/bits/unistd_ext.h (getdents64): Remove
declaration.
* manual/filesys.texi (Low-level Directory Access): Update header
to dirent.h.
2019-07-29 DJ Delorie <dj@redhat.com>
Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

21
bits/dirent_ext.h Normal file
View File

@ -0,0 +1,21 @@
/* System-specific extensions of <dirent.h>, generic version.
Copyright (C) 2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _DIRENT_H
# error "Never include <bits/dirent_ext.h> directly; use <dirent.h> instead."
#endif

View File

@ -22,7 +22,7 @@ subdir := dirent
include ../Makeconfig
headers := dirent.h bits/dirent.h
headers := dirent.h bits/dirent.h bits/dirent_ext.h
routines := opendir closedir readdir readdir_r rewinddir \
seekdir telldir scandir alphasort versionsort \
getdents getdents64 dirfd readdir64 readdir64_r scandir64 \

View File

@ -401,4 +401,6 @@ extern int versionsort64 (const struct dirent64 **__e1,
__END_DECLS
#include <bits/dirent_ext.h>
#endif /* dirent.h */

View File

@ -843,7 +843,7 @@ Directory data is obtained from a file descriptor, as created by the
@xref{Opening and Closing Files}.
@deftypefun ssize_t getdents64 (int @var{fd}, void *@var{buffer}, size_t @var{length})
@standards{Linux, unistd.h}
@standards{Linux, dirent.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{getdents64} function reads at most @var{length} bytes of
directory entry data from the file descriptor @var{fd} and stores it

View File

@ -0,0 +1,33 @@
/* System-specific extensions of <dirent.h>. Linux version.
Copyright (C) 2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _DIRENT_H
# error "Never include <bits/dirent_ext.h> directly; use <dirent.h> instead."
#endif
__BEGIN_DECLS
#ifdef __USE_GNU
/* Read from the directory descriptor FD into LENGTH bytes at BUFFER.
Return the number of bytes read on success (0 for end of
directory), and -1 for failure. */
extern __ssize_t getdents64 (int __fd, void *__buffer, size_t __length)
__THROW __nonnull ((2));
#endif
__END_DECLS

View File

@ -22,12 +22,6 @@
#ifdef __USE_GNU
/* Read from the directory descriptor FD into LENGTH bytes at BUFFER.
Return the number of bytes read on success (0 for end of
directory), and -1 for failure. */
extern ssize_t getdents64 (int __fd, void *__buffer, size_t __length)
__THROW __nonnull ((2));
/* Return the kernel thread ID (TID) of the current thread. The
returned value is not subject to caching. Most Linux system calls
accept a TID in place of a PID. Using the TID to change properties