| From df423041e070dc30b835ecfea7181914e834e33d Mon Sep 17 00:00:00 2001 |
| From: git-bruh <e817509a-8ee9-4332-b0ad-3a6bdf9ab63f@aleeas.com> |
| Date: Tue, 19 Sep 2023 19:47:50 +0530 |
| Subject: [PATCH] Don't use LFS64 symbols on musl |
| |
| Simplify #[cfg] blocks |
| |
| fmt |
| |
| don't try to use the more appropriate direntry on musl |
| |
| Upstream-Status: Backport [https://github.com/rust-lang/rust/pull/115968/commits/7a504cc68a56bfaa7855016c81ced9e6b1320fc5] |
| Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> |
| --- |
| library/std/src/os/linux/fs.rs | 9 ++++++++- |
| library/std/src/sys/unix/fd.rs | 24 ++++++++++++++++++++---- |
| library/std/src/sys/unix/fs.rs | 23 ++++++++++++++--------- |
| 3 files changed, 42 insertions(+), 14 deletions(-) |
| |
| diff --git a/library/std/src/os/linux/fs.rs b/library/std/src/os/linux/fs.rs |
| index 479bbcc17a89..ab0b2a3eda3f 100644 |
| --- a/library/std/src/os/linux/fs.rs |
| +++ b/library/std/src/os/linux/fs.rs |
| @@ -329,7 +329,14 @@ pub trait MetadataExt { |
| impl MetadataExt for Metadata { |
| #[allow(deprecated)] |
| fn as_raw_stat(&self) -> &raw::stat { |
| - unsafe { &*(self.as_inner().as_inner() as *const libc::stat64 as *const raw::stat) } |
| + #[cfg(target_env = "musl")] |
| + unsafe { |
| + &*(self.as_inner().as_inner() as *const libc::stat as *const raw::stat) |
| + } |
| + #[cfg(not(target_env = "musl"))] |
| + unsafe { |
| + &*(self.as_inner().as_inner() as *const libc::stat64 as *const raw::stat) |
| + } |
| } |
| fn st_dev(&self) -> u64 { |
| self.as_inner().as_inner().st_dev as u64 |
| diff --git a/library/std/src/sys/unix/fd.rs b/library/std/src/sys/unix/fd.rs |
| index 6c4f408426a9..bf1fb3123c4c 100644 |
| --- a/library/std/src/sys/unix/fd.rs |
| +++ b/library/std/src/sys/unix/fd.rs |
| @@ -126,9 +126,17 @@ pub fn read_to_end(&self, buf: &mut Vec<u8>) -> io::Result<usize> { |
| } |
| |
| pub fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<usize> { |
| - #[cfg(not(any(target_os = "linux", target_os = "android", target_os = "hurd")))] |
| + #[cfg(not(any( |
| + all(target_os = "linux", not(target_env = "musl")), |
| + target_os = "android", |
| + target_os = "hurd" |
| + )))] |
| use libc::pread as pread64; |
| - #[cfg(any(target_os = "linux", target_os = "android", target_os = "hurd"))] |
| + #[cfg(any( |
| + all(target_os = "linux", not(target_env = "musl")), |
| + target_os = "android", |
| + target_os = "hurd" |
| + ))] |
| use libc::pread64; |
| |
| unsafe { |
| @@ -285,9 +293,17 @@ pub fn is_write_vectored(&self) -> bool { |
| } |
| |
| pub fn write_at(&self, buf: &[u8], offset: u64) -> io::Result<usize> { |
| - #[cfg(not(any(target_os = "linux", target_os = "android", target_os = "hurd")))] |
| + #[cfg(not(any( |
| + all(target_os = "linux", not(target_env = "musl")), |
| + target_os = "android", |
| + target_os = "hurd" |
| + )))] |
| use libc::pwrite as pwrite64; |
| - #[cfg(any(target_os = "linux", target_os = "android", target_os = "hurd"))] |
| + #[cfg(any( |
| + all(target_os = "linux", not(target_env = "musl")), |
| + target_os = "android", |
| + target_os = "hurd" |
| + ))] |
| use libc::pwrite64; |
| |
| unsafe { |
| diff --git a/library/std/src/sys/unix/fs.rs b/library/std/src/sys/unix/fs.rs |
| index 764e1f257901..b61554098531 100644 |
| --- a/library/std/src/sys/unix/fs.rs |
| +++ b/library/std/src/sys/unix/fs.rs |
| @@ -40,13 +40,17 @@ |
| ))] |
| use libc::c_char; |
| #[cfg(any( |
| - target_os = "linux", |
| + all(target_os = "linux", not(target_env = "musl")), |
| target_os = "emscripten", |
| target_os = "android", |
| - target_os = "hurd", |
| + target_os = "hurd" |
| ))] |
| use libc::dirfd; |
| -#[cfg(any(target_os = "linux", target_os = "emscripten", target_os = "hurd"))] |
| +#[cfg(any( |
| + all(target_os = "linux", not(target_env = "musl")), |
| + target_os = "emscripten", |
| + target_os = "hurd" |
| +))] |
| use libc::fstatat64; |
| #[cfg(any( |
| target_os = "android", |
| @@ -56,9 +60,10 @@ |
| target_os = "illumos", |
| target_os = "nto", |
| target_os = "vita", |
| + all(target_os = "linux", target_env = "musl"), |
| ))] |
| use libc::readdir as readdir64; |
| -#[cfg(any(target_os = "linux", target_os = "hurd"))] |
| +#[cfg(any(all(target_os = "linux", not(target_env = "musl")), target_os = "hurd"))] |
| use libc::readdir64; |
| #[cfg(any(target_os = "emscripten", target_os = "l4re"))] |
| use libc::readdir64_r; |
| @@ -82,7 +87,7 @@ |
| lstat as lstat64, off64_t, open as open64, stat as stat64, |
| }; |
| #[cfg(not(any( |
| - target_os = "linux", |
| + all(target_os = "linux", not(target_env = "musl")), |
| target_os = "emscripten", |
| target_os = "l4re", |
| target_os = "android", |
| @@ -93,7 +98,7 @@ |
| lstat as lstat64, off_t as off64_t, open as open64, stat as stat64, |
| }; |
| #[cfg(any( |
| - target_os = "linux", |
| + all(target_os = "linux", not(target_env = "musl")), |
| target_os = "emscripten", |
| target_os = "l4re", |
| target_os = "hurd" |
| @@ -829,10 +834,10 @@ pub fn file_name(&self) -> OsString { |
| |
| #[cfg(all( |
| any( |
| - target_os = "linux", |
| + all(target_os = "linux", not(target_env = "musl")), |
| target_os = "emscripten", |
| target_os = "android", |
| - target_os = "hurd", |
| + target_os = "hurd" |
| ), |
| not(miri) |
| ))] |
| @@ -858,7 +863,7 @@ pub fn metadata(&self) -> io::Result<FileAttr> { |
| |
| #[cfg(any( |
| not(any( |
| - target_os = "linux", |
| + all(target_os = "linux", not(target_env = "musl")), |
| target_os = "emscripten", |
| target_os = "android", |
| target_os = "hurd", |
| -- |
| 2.39.0 |
| |