about summary refs log tree commit diff
path: root/src/libstd/sys
diff options
context:
space:
mode:
authorJosh Stone <cuviper@gmail.com>2016-02-21 01:04:14 -0800
committerJosh Stone <cuviper@gmail.com>2016-02-21 01:04:14 -0800
commit7e962166dfa1c55489d9637d829cb8e16f6de32a (patch)
tree59e573ed0f978e7c4225adaaacb9b8b86d3e2585 /src/libstd/sys
parenta2fb48e9f76aabd543e4f6352ac32109e09fab22 (diff)
downloadrust-7e962166dfa1c55489d9637d829cb8e16f6de32a.tar.gz
rust-7e962166dfa1c55489d9637d829cb8e16f6de32a.zip
std: Use Android LFS off64_t, ftruncate64, and lseek64
Android should use 64-bit LFS symbols for `lseek` and `ftruncate`, lest
those offset parameters suffer a lossy cast down to a 32-bit `off_t`.

Unlike GNU/Linux, Android's `stat`, `dirent`, and related functions are
always 64-bit LFS compatible, and `open` already implies `O_LARGEFILE`,
so all those don't need to follow Linux.  It might be nice to unify them
anyway, but those other LFS symbols aren't present in API 18 bionic.

r? @alexcrichton
Diffstat (limited to 'src/libstd/sys')
-rw-r--r--src/libstd/sys/unix/fs.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/fs.rs b/src/libstd/sys/unix/fs.rs
index e8e0a604e55..e5bdfa3ac88 100644
--- a/src/libstd/sys/unix/fs.rs
+++ b/src/libstd/sys/unix/fs.rs
@@ -27,7 +27,10 @@ use sys_common::{AsInner, FromInner};
 
 #[cfg(target_os = "linux")]
 use libc::{stat64, fstat64, lstat64, off64_t, ftruncate64, lseek64, dirent64, readdir64_r, open64};
-#[cfg(not(target_os = "linux"))]
+#[cfg(target_os = "android")]
+use libc::{stat as stat64, fstat as fstat64, lstat as lstat64, off64_t, ftruncate64, lseek64,
+           dirent as dirent64, open as open64};
+#[cfg(not(any(target_os = "linux", target_os = "android")))]
 use libc::{stat as stat64, fstat as fstat64, lstat as lstat64, off_t as off64_t,
            ftruncate as ftruncate64, lseek as lseek64, dirent as dirent64, open as open64};
 #[cfg(not(any(target_os = "linux", target_os = "solaris")))]