From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 5E1223858C3A; Thu, 26 Jan 2023 12:17:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5E1223858C3A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1674735473; bh=D7/XMzOPJh6xFmoTtnv2yKLDO16PRh+VdYkpAlU1aCA=; h=From:To:Subject:Date:From; b=KpD4EXz+MPxQbDF6sw8NJwp/gWOuAmAes3LUCZs+DW0/RkU6cvhrS7VyF06DzOcvN xtcPRYi/3BxJbNg2BQOt7cfU7tqTow++geqf9MyVBhKB9fwYCyNqsiz+tOVRKnZzWw MyP0cOCdD53RBcma7nokxrwJ3iAuC1QiafYZ8PA4= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/azanella/bz23960-dirent] dirent: Deprecate getdirentries X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/azanella/bz23960-dirent X-Git-Oldrev: 425419e2244b26670d09fb02e5660a7b0d6b2283 X-Git-Newrev: 8587ae4a679d317d5ee4ba83af35e9105198bada Message-Id: <20230126121753.5E1223858C3A@sourceware.org> Date: Thu, 26 Jan 2023 12:17:53 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8587ae4a679d317d5ee4ba83af35e9105198bada commit 8587ae4a679d317d5ee4ba83af35e9105198bada Author: Adhemerval Zanella Date: Fri Apr 17 09:59:51 2020 -0300 dirent: Deprecate getdirentries The interface has some issues: 1. It is build on top getdents on Linux and requires handling non-LFS call using LFS getdents. 2. It is not wildly used and the non-LFS support is as problematic as non-LFS readdir. glibc only exports the LFS getdents. 3. It is not a direct replacement over BSD since on some plataform its signature has changed (FreeBSD 11, for instance, used to set the offset as a 'long' and changed to 'off_t' on version 12). The idea is to eventually move the symbols to compat ones. Diff: --- NEWS | 3 +++ dirent/dirent.h | 14 ++++++++++---- sysdeps/unix/sysv/linux/Makefile | 4 ++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 5c276dacb3..0e893bd9db 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,9 @@ Deprecated and removed features, and other changes affecting compatibility: corresponds to the AT_PLATFORM system name, or employs the legacy AT_HWCAP search mechanism, which was deprecated in version 2.33. +* The function getdirentries is now deprecated, applications should use + either getdents64, readdir64 or readdir. + Changes to build and runtime requirements: [Add changes to build and runtime requirements here] diff --git a/dirent/dirent.h b/dirent/dirent.h index 37be2030df..1465b7d9d5 100644 --- a/dirent/dirent.h +++ b/dirent/dirent.h @@ -350,29 +350,35 @@ extern int alphasort64 (const struct dirent64 **__e1, /* Read directory entries from FD into BUF, reading at most NBYTES. Reading starts at offset *BASEP, and *BASEP is updated with the new position after reading. Returns the number of bytes read; zero when at - end of directory; or -1 for errors. */ + end of directory; or -1 for errors. + This is deprecated and getdents64 or readdir should be used instead. */ # ifndef __USE_FILE_OFFSET64 extern __ssize_t getdirentries (int __fd, char *__restrict __buf, size_t __nbytes, __off_t *__restrict __basep) - __THROW __nonnull ((2, 4)); + __THROW __nonnull ((2, 4)) + __attribute_deprecated_msg__ ("Use getdents64 instead"); # else # ifdef __REDIRECT extern __ssize_t __REDIRECT_NTH (getdirentries, (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t *__restrict __basep), - getdirentries64) __nonnull ((2, 4)); + getdirentries64) + __nonnull ((2, 4)) + __attribute_deprecated_msg__ ("Use getdents64 instead"); # else # define getdirentries getdirentries64 # endif # endif # ifdef __USE_LARGEFILE64 +/* This is deprecated and getdents64 or readdir64 should be used instead. */ extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t *__restrict __basep) - __THROW __nonnull ((2, 4)); + __THROW __nonnull ((2, 4)) + __attribute_deprecated_msg__ ("Use getdents64 instead"); # endif #endif /* Use misc. */ diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index f298878e8f..41e5341450 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -467,6 +467,10 @@ tests += \ tst-getdents64 \ tst-readdir64-compat \ # tests + +# Avoid the warning for the weak_alias for _DIRENT_MATCHES_DIRENT64 +CFLAGS-getdirentries64.o = -Wno-deprecated-declarations +CFLAGS-getdirentries64.os = -Wno-deprecated-declarations endif # $(subdir) == dirent ifeq ($(subdir),nis)