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> 2019-07-29 DJ Delorie <dj@redhat.com>
Tulio Magno Quites Machado Filho <tuliom@linux.ibm.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 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 \ routines := opendir closedir readdir readdir_r rewinddir \
seekdir telldir scandir alphasort versionsort \ seekdir telldir scandir alphasort versionsort \
getdents getdents64 dirfd readdir64 readdir64_r scandir64 \ getdents getdents64 dirfd readdir64 readdir64_r scandir64 \

View File

@ -401,4 +401,6 @@ extern int versionsort64 (const struct dirent64 **__e1,
__END_DECLS __END_DECLS
#include <bits/dirent_ext.h>
#endif /* dirent.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}. @xref{Opening and Closing Files}.
@deftypefun ssize_t getdents64 (int @var{fd}, void *@var{buffer}, size_t @var{length}) @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{}} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{getdents64} function reads at most @var{length} bytes of The @code{getdents64} function reads at most @var{length} bytes of
directory entry data from the file descriptor @var{fd} and stores it 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 #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 /* Return the kernel thread ID (TID) of the current thread. The
returned value is not subject to caching. Most Linux system calls 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 accept a TID in place of a PID. Using the TID to change properties