|
Message-Id: <20220524080704.70894-1-jiaqing.zhao@linux.intel.com> Date: Tue, 24 May 2022 16:07:04 +0800 From: Jiaqing Zhao <jiaqing.zhao@...ux.intel.com> To: musl@...ts.openwall.com Cc: Jiaqing Zhao <jiaqing.zhao@...ux.intel.com> Subject: [PATCH] dirent: implement getdents64 In musl, getdents64 is an alias of getdents, but the type annotation of these two functions are different according to man page[1], causing compile errors. This patch implements the standard getdents64. ssize_t getdents64(int fd, void *dirp, size_t count); [1] https://man7.org/linux/man-pages/man2/getdents.2.html Signed-off-by: Jiaqing Zhao <jiaqing.zhao@...ux.intel.com> --- include/dirent.h | 3 ++- src/linux/getdents.c | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/dirent.h b/include/dirent.h index 650ecf64..4c5367c2 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -11,6 +11,7 @@ extern "C" { #define __NEED_off_t #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) #define __NEED_size_t +#define __NEED_ssize_t #endif #include <bits/alltypes.h> @@ -50,6 +51,7 @@ long telldir(DIR *); #define IFTODT(x) ((x)>>12 & 017) #define DTTOIF(x) ((x)<<12) int getdents(int, struct dirent *, size_t); +ssize_t getdents64(int, void *, size_t); #endif #ifdef _GNU_SOURCE @@ -65,7 +67,6 @@ int versionsort(const struct dirent **, const struct dirent **); #define versionsort64 versionsort #define off64_t off_t #define ino64_t ino_t -#define getdents64 getdents #endif #ifdef __cplusplus diff --git a/src/linux/getdents.c b/src/linux/getdents.c index 796c1e5c..923a8076 100644 --- a/src/linux/getdents.c +++ b/src/linux/getdents.c @@ -9,4 +9,8 @@ int getdents(int fd, struct dirent *buf, size_t len) return syscall(SYS_getdents, fd, buf, len); } -weak_alias(getdents, getdents64); +ssize_t getdents64(int fd, void *buf, size_t len) +{ + if (len>INT_MAX) len = INT_MAX; + return syscall(SYS_getdents64, fd, buf, len); +} -- 2.34.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.