summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony J. Bentley <anthony@anjbe.name>2016-07-17 12:30:00 +0200
committerJan Beich <jbeich@FreeBSD.org>2016-10-28 01:28:30 +0200
commit26af2b644ce634c383f27b66b9d291a34d80ab30 (patch)
tree37f28ce4c8bbe831c7ab3779eb427b17d8844636
parentcommon: stat64 is non-standard, hide on a random Unix (diff)
downloadyuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.tar
yuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.tar.gz
yuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.tar.bz2
yuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.tar.lz
yuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.tar.xz
yuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.tar.zst
yuzu-26af2b644ce634c383f27b66b9d291a34d80ab30.zip
-rw-r--r--CMakeLists.txt9
-rw-r--r--src/common/file_util.cpp25
2 files changed, 19 insertions, 15 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c7a24f04f..df7fe0cba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,6 +105,15 @@ else()
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF,ICF" CACHE STRING "" FORCE)
endif()
+# Set file offset size to 64 bits.
+#
+# On modern Unixes, this is typically already the case. The lone exception is
+# glibc, which may default to 32 bits. glibc allows this to be configured
+# by setting _FILE_OFFSET_BITS.
+if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ add_definitions(-D_FILE_OFFSET_BITS=64)
+endif()
+
add_definitions(-DSINGLETHREADED)
# CMake seems to only define _DEBUG on Windows
set_property(DIRECTORY APPEND PROPERTY
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
index c1838efb9..407ed047a 100644
--- a/src/common/file_util.cpp
+++ b/src/common/file_util.cpp
@@ -23,8 +23,8 @@
#define fseeko _fseeki64
#define ftello _ftelli64
#define atoll _atoi64
-#define stat64 _stat64
-#define fstat64 _fstat64
+#define stat _stat64
+#define fstat _fstat64
#define fileno _fileno
#else
#ifdef __APPLE__
@@ -52,11 +52,6 @@
#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
#endif
-#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__GLIBC__) && !defined(__UCLIBC__)
-#define stat64 stat
-#define fstat64 fstat
-#endif
-
// This namespace has various generic functions related to files and paths.
// The code still needs a ton of cleanup.
// REMEMBER: strdup considered harmful!
@@ -76,7 +71,7 @@ static void StripTailDirSlashes(std::string& fname) {
// Returns true if file filename exists
bool Exists(const std::string& filename) {
- struct stat64 file_info;
+ struct stat file_info;
std::string copy(filename);
StripTailDirSlashes(copy);
@@ -88,7 +83,7 @@ bool Exists(const std::string& filename) {
int result = _wstat64(Common::UTF8ToUTF16W(copy).c_str(), &file_info);
#else
- int result = stat64(copy.c_str(), &file_info);
+ int result = stat(copy.c_str(), &file_info);
#endif
return (result == 0);
@@ -96,7 +91,7 @@ bool Exists(const std::string& filename) {
// Returns true if filename is a directory
bool IsDirectory(const std::string& filename) {
- struct stat64 file_info;
+ struct stat file_info;
std::string copy(filename);
StripTailDirSlashes(copy);
@@ -108,7 +103,7 @@ bool IsDirectory(const std::string& filename) {
int result = _wstat64(Common::UTF8ToUTF16W(copy).c_str(), &file_info);
#else
- int result = stat64(copy.c_str(), &file_info);
+ int result = stat(copy.c_str(), &file_info);
#endif
if (result < 0) {
@@ -339,11 +334,11 @@ u64 GetSize(const std::string& filename) {
return 0;
}
- struct stat64 buf;
+ struct stat buf;
#ifdef _WIN32
if (_wstat64(Common::UTF8ToUTF16W(filename).c_str(), &buf) == 0)
#else
- if (stat64(filename.c_str(), &buf) == 0)
+ if (stat(filename.c_str(), &buf) == 0)
#endif
{
LOG_TRACE(Common_Filesystem, "%s: %lld", filename.c_str(), (long long)buf.st_size);
@@ -356,8 +351,8 @@ u64 GetSize(const std::string& filename) {
// Overloaded GetSize, accepts file descriptor
u64 GetSize(const int fd) {
- struct stat64 buf;
- if (fstat64(fd, &buf) != 0) {
+ struct stat buf;
+ if (fstat(fd, &buf) != 0) {
LOG_ERROR(Common_Filesystem, "GetSize: stat failed %i: %s", fd, GetLastErrorMsg());
return 0;
}