From b8b3d5a14e9d6248f8d78958c497eea0a684c939 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 29 Jul 2019 21:02:46 +0200 Subject: [PATCH] Linux: Move getdents64 to This matches the location of the declaration in musl. Reviewed-by: Carlos O'Donell --- ChangeLog | 12 +++++++++++ bits/dirent_ext.h | 21 ++++++++++++++++++++ dirent/Makefile | 2 +- dirent/dirent.h | 2 ++ manual/filesys.texi | 2 +- sysdeps/unix/sysv/linux/bits/dirent_ext.h | 33 +++++++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/bits/unistd_ext.h | 6 ------ 7 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 bits/dirent_ext.h create mode 100644 sysdeps/unix/sysv/linux/bits/dirent_ext.h diff --git a/ChangeLog b/ChangeLog index b4b6bc2..6099d14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2019-07-29 Florian Weimer + + Linux: Move declaration of getdents64 to . + * bits/dirent_ext.h: New file. + * dirent/Makefile (headers): Add bits/dirent_ext.h. + * dirent/dirent.h: Include . + * 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 Tulio Magno Quites Machado Filho diff --git a/bits/dirent_ext.h b/bits/dirent_ext.h new file mode 100644 index 0000000..279fd25 --- /dev/null +++ b/bits/dirent_ext.h @@ -0,0 +1,21 @@ +/* System-specific extensions of , 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 + . */ + +#ifndef _DIRENT_H +# error "Never include directly; use instead." +#endif diff --git a/dirent/Makefile b/dirent/Makefile index b002214..144e448 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 fc4d485..d4650db 100644 --- a/dirent/dirent.h +++ b/dirent/dirent.h @@ -401,4 +401,6 @@ extern int versionsort64 (const struct dirent64 **__e1, __END_DECLS +#include + #endif /* dirent.h */ diff --git a/manual/filesys.texi b/manual/filesys.texi index 5133194..d31dbb2 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 0000000..bac8f95 --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/dirent_ext.h @@ -0,0 +1,33 @@ +/* System-specific extensions of . 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 + . */ + +#ifndef _DIRENT_H +# error "Never include directly; use 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 6e7b2bb..0061172 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 -- 2.7.4