aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2022-04-11 15:18:15 -0700
committerRob Landley <rob@landley.net>2022-04-11 22:52:14 -0500
commit50361a1b07b9d9e4fff983ef2a5e233625851de2 (patch)
treebb379b6ddd9fb8ef1a6fa232038ebe4c5b156de7
parentcd4c2da20a24116117842060798002032c4f5bb0 (diff)
downloadtoybox-50361a1b07b9d9e4fff983ef2a5e233625851de2.tar.gz
lib/portability.c: don't assume we have __NR_copy_file_range.
Android's host tools currently build with glibc from 2012, but even if we were more up to date (or had already switched to musl for host tools, which hopefully will be the case by this time next year), it was added to glibc recently enough to miss the "seven year window".
-rw-r--r--lib/portability.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/portability.c b/lib/portability.c
index 174933c3..89744dd0 100644
--- a/lib/portability.c
+++ b/lib/portability.c
@@ -623,10 +623,11 @@ int get_block_device_size(int fd, unsigned long long* size)
}
#endif
-ssize_t copy_file_range_wrap(int infd, off_t *inoff, int outfd,
+static ssize_t copy_file_range_wrap(int infd, off_t *inoff, int outfd,
off_t *outoff, size_t len, unsigned flags)
{
-#if defined(__linux__)
+ // glibc added this constant in git at the end of 2017, shipped in 2018-02.
+#if defined(__NR_copy_file_range)
return syscall(__NR_copy_file_range, infd, inoff, outfd, outoff, len, flags);
#else
errno = EINVAL;