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
This commit is contained in:
Josh Stone 2016-02-21 01:04:14 -08:00
parent a2fb48e9f7
commit 7e962166df
2 changed files with 5 additions and 2 deletions

@ -1 +1 @@
Subproject commit 403bdc88394919f297bdb365032044cc0481c319
Subproject commit 1b1eea2cdd77c63d73ba0b09b905a91910d1c992

View File

@ -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")))]