diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | bits/dirent_ext.h | 21 | ||||
-rw-r--r-- | dirent/Makefile | 2 | ||||
-rw-r--r-- | dirent/dirent.h | 2 | ||||
-rw-r--r-- | manual/filesys.texi | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/dirent_ext.h | 33 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/unistd_ext.h | 6 |
7 files changed, 70 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index b4b6bc20d1..6099d1468a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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> diff --git a/bits/dirent_ext.h b/bits/dirent_ext.h new file mode 100644 index 0000000000..279fd25d25 --- /dev/null +++ b/bits/dirent_ext.h @@ -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 diff --git a/dirent/Makefile b/dirent/Makefile index b002214c3d..144e448b3d 100644 --- a/dirent/Makefile +++ b/dirent/Makefile @@ -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 \ diff --git a/dirent/dirent.h b/dirent/dirent.h index fc4d4859fe..d4650db17e 100644 --- a/dirent/dirent.h +++ b/dirent/dirent.h @@ -401,4 +401,6 @@ extern int versionsort64 (const struct dirent64 **__e1, __END_DECLS +#include <bits/dirent_ext.h> + #endif /* dirent.h */ diff --git a/manual/filesys.texi b/manual/filesys.texi index 513319418a..d31dbb24b4 100644 --- a/manual/filesys.texi +++ b/manual/filesys.texi @@ -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 diff --git a/sysdeps/unix/sysv/linux/bits/dirent_ext.h b/sysdeps/unix/sysv/linux/bits/dirent_ext.h new file mode 100644 index 0000000000..bac8f95b8f --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/dirent_ext.h @@ -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 diff --git a/sysdeps/unix/sysv/linux/bits/unistd_ext.h b/sysdeps/unix/sysv/linux/bits/unistd_ext.h index 6e7b2bb83d..0061172f23 100644 --- a/sysdeps/unix/sysv/linux/bits/unistd_ext.h +++ b/sysdeps/unix/sysv/linux/bits/unistd_ext.h @@ -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 |