From patchwork Thu Jul 25 13:42:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 33795 Received: (qmail 67825 invoked by alias); 25 Jul 2019 13:42:28 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 67817 invoked by uid 89); 25 Jul 2019 13:42:28 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, SPF_HELO_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mx1.redhat.com From: Florian Weimer To: libc-alpha@sourceware.org Cc: Carlos O'Donell Subject: [PATCH] Linux: Move getdents64 to Date: Thu, 25 Jul 2019 15:42:20 +0200 Message-ID: <874l3agrib.fsf@oldenburg2.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 This matches the location of the declaration in musl. [Passed testing on x86_64-linux-gnu, i686-linux-gnu, and build-many-glibcs.py (with GCC 9). I do think we should make this change before the release because it's going to be the first one with getdents64.] 2019-07-25 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. Reviewed-by: Adhemerval Zanella Reviewed-by: Carlos O'Donell 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 , 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 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 + #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 . 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 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