Stop using transitional LFS64 APIs gn is already built with _FILE_OFFSET_BITS=64, so the unsuffixed versions of these APIs are always the 64-bit versions on platforms that provide the suffixed APIs anyway. This fixes building for recent versions of musl, which have removed the transitional suffixed APIs. Change-Id: Ic4febbdebabedaa576a3931efcd80b80e26d2171 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/17720 Reviewed-by: David Turner <digit@google.com> Reviewed-by: Takuto Ikuta <tikuta@google.com> Commit-Queue: David Turner <digit@google.com>
diff --git a/src/base/files/file.h b/src/base/files/file.h index 82c4f9e..4ee079c 100644 --- a/src/base/files/file.h +++ b/src/base/files/file.h
@@ -21,14 +21,6 @@ namespace base { -#if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) || \ - defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_ZOS) || \ - defined(OS_ANDROID) && __ANDROID_API__ < 21 || defined(OS_SERENITY) -typedef struct stat stat_wrapper_t; -#elif defined(OS_POSIX) || defined(OS_FUCHSIA) -typedef struct stat64 stat_wrapper_t; -#endif - // Thin wrapper around an OS-level file. // Note that this class does not provide any support for asynchronous IO. // @@ -94,7 +86,7 @@ ~Info(); #if defined(OS_POSIX) || defined(OS_FUCHSIA) // Fills this struct with values from |stat_info|. - void FromStat(const stat_wrapper_t& stat_info); + void FromStat(const struct stat& stat_info); #endif // The size of the file in bytes. Undefined when is_directory is true.
diff --git a/src/base/files/file_posix.cc b/src/base/files/file_posix.cc index ade826b..249aafe 100644 --- a/src/base/files/file_posix.cc +++ b/src/base/files/file_posix.cc
@@ -24,18 +24,6 @@ namespace { -#if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) || \ - defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_ZOS) || \ - defined(OS_ANDROID) && __ANDROID_API__ < 21 || defined(OS_SERENITY) -int CallFstat(int fd, stat_wrapper_t* sb) { - return fstat(fd, sb); -} -#else -int CallFstat(int fd, stat_wrapper_t* sb) { - return fstat64(fd, sb); -} -#endif - // Some systems don't provide the following system calls, so either simulate // them or wrap them in order to minimize the number of #ifdef's in this file. #if !defined(OS_AIX) @@ -82,7 +70,7 @@ } // namespace -void File::Info::FromStat(const stat_wrapper_t& stat_info) { +void File::Info::FromStat(const struct stat& stat_info) { is_directory = S_ISDIR(stat_info.st_mode); is_symbolic_link = S_ISLNK(stat_info.st_mode); size = stat_info.st_size; @@ -247,8 +235,8 @@ int64_t File::GetLength() { DCHECK(IsValid()); - stat_wrapper_t file_info; - if (CallFstat(file_.get(), &file_info)) + struct stat file_info; + if (fstat(file_.get(), &file_info)) return -1; return file_info.st_size; @@ -263,8 +251,8 @@ bool File::GetInfo(Info* info) { DCHECK(IsValid()); - stat_wrapper_t file_info; - if (CallFstat(file_.get(), &file_info)) + struct stat file_info; + if (fstat(file_.get(), &file_info)) return false; info->FromStat(file_info);
diff --git a/src/base/files/file_util_posix.cc b/src/base/files/file_util_posix.cc index 08de845..33b2be3 100644 --- a/src/base/files/file_util_posix.cc +++ b/src/base/files/file_util_posix.cc
@@ -59,30 +59,12 @@ namespace { -#if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) || \ - defined(OS_HAIKU) || defined(OS_MSYS) || defined(OS_ZOS) || \ - defined(OS_ANDROID) && __ANDROID_API__ < 21 || defined(OS_SERENITY) -int CallStat(const char* path, stat_wrapper_t* sb) { - return stat(path, sb); -} -int CallLstat(const char* path, stat_wrapper_t* sb) { - return lstat(path, sb); -} -#else -int CallStat(const char* path, stat_wrapper_t* sb) { - return stat64(path, sb); -} -int CallLstat(const char* path, stat_wrapper_t* sb) { - return lstat64(path, sb); -} -#endif - // Helper for VerifyPathControlledByUser. bool VerifySpecificPathControlledByUser(const FilePath& path, uid_t owner_uid, const std::set<gid_t>& group_gids) { - stat_wrapper_t stat_info; - if (CallLstat(path.value().c_str(), &stat_info) != 0) { + struct stat stat_info; + if (lstat(path.value().c_str(), &stat_info) != 0) { DPLOG(ERROR) << "Failed to get information on path " << path.value(); return false; } @@ -172,8 +154,8 @@ // here. bool DeleteFile(const FilePath& path, bool recursive) { const char* path_str = path.value().c_str(); - stat_wrapper_t file_info; - if (CallLstat(path_str, &file_info) != 0) { + struct stat file_info; + if (lstat(path_str, &file_info) != 0) { // The Windows version defines this condition as success. return (errno == ENOENT || errno == ENOTDIR); } @@ -268,8 +250,8 @@ } bool DirectoryExists(const FilePath& path) { - stat_wrapper_t file_info; - if (CallStat(path.value().c_str(), &file_info) != 0) + struct stat file_info; + if (stat(path.value().c_str(), &file_info) != 0) return false; return S_ISDIR(file_info.st_mode); } @@ -311,10 +293,10 @@ bool GetPosixFilePermissions(const FilePath& path, int* mode) { DCHECK(mode); - stat_wrapper_t file_info; + struct stat file_info; // Uses stat(), because on symbolic link, lstat() does not return valid // permission bits in st_mode - if (CallStat(path.value().c_str(), &file_info) != 0) + if (stat(path.value().c_str(), &file_info) != 0) return false; *mode = file_info.st_mode & FILE_PERMISSION_MASK; @@ -325,8 +307,8 @@ DCHECK_EQ(mode & ~FILE_PERMISSION_MASK, 0); // Calls stat() so that we can preserve the higher bits like S_ISGID. - stat_wrapper_t stat_buf; - if (CallStat(path.value().c_str(), &stat_buf) != 0) + struct stat stat_buf; + if (stat(path.value().c_str(), &stat_buf) != 0) return false; // Clears the existing permission bits, and adds the new ones. @@ -492,17 +474,17 @@ // TODO(rkc): Refactor GetFileInfo and FileEnumerator to handle symlinks // correctly. http://code.google.com/p/chromium-os/issues/detail?id=15948 bool IsLink(const FilePath& file_path) { - stat_wrapper_t st; + struct stat st; // If we can't lstat the file, it's safe to assume that the file won't at // least be a 'followable' link. - if (CallLstat(file_path.value().c_str(), &st) != 0) + if (lstat(file_path.value().c_str(), &st) != 0) return false; return S_ISLNK(st.st_mode); } bool GetFileInfo(const FilePath& file_path, File::Info* results) { - stat_wrapper_t file_info; - if (CallStat(file_path.value().c_str(), &file_info) != 0) + struct stat file_info; + if (stat(file_path.value().c_str(), &file_info) != 0) return false; results->FromStat(file_info);