Merge pull request #4020 from bentley/fstat64
Use the standard stat()/fstat() interfaces, not nonstandard *64().
This commit is contained in:
commit
ff3b4a0fd7
|
@ -93,6 +93,15 @@ else()
|
||||||
add_definitions(-DDATA_DIR="${datadir}/")
|
add_definitions(-DDATA_DIR="${datadir}/")
|
||||||
endif()
|
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()
|
||||||
|
|
||||||
# Set where the binary files will be built. The program will not execute from
|
# Set where the binary files will be built. The program will not execute from
|
||||||
# here. You must run "make install" to install these to the proper location
|
# here. You must run "make install" to install these to the proper location
|
||||||
# as defined above.
|
# as defined above.
|
||||||
|
|
|
@ -84,8 +84,8 @@ inline u64 _rotr64(u64 x, unsigned int shift)
|
||||||
#define fseeko _fseeki64
|
#define fseeko _fseeki64
|
||||||
#define ftello _ftelli64
|
#define ftello _ftelli64
|
||||||
#define atoll _atoi64
|
#define atoll _atoi64
|
||||||
#define stat64 _stat64
|
#define stat _stat64
|
||||||
#define fstat64 _fstat64
|
#define fstat _fstat64
|
||||||
#define fileno _fileno
|
#define fileno _fileno
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -45,11 +45,6 @@
|
||||||
#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
|
#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined BSD4_4 || defined __FreeBSD__
|
|
||||||
#define stat64 stat
|
|
||||||
#define fstat64 fstat
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// This namespace has various generic functions related to files and paths.
|
// This namespace has various generic functions related to files and paths.
|
||||||
// The code still needs a ton of cleanup.
|
// The code still needs a ton of cleanup.
|
||||||
// REMEMBER: strdup considered harmful!
|
// REMEMBER: strdup considered harmful!
|
||||||
|
@ -69,7 +64,7 @@ static void StripTailDirSlashes(std::string& fname)
|
||||||
// Returns true if file filename exists
|
// Returns true if file filename exists
|
||||||
bool Exists(const std::string& filename)
|
bool Exists(const std::string& filename)
|
||||||
{
|
{
|
||||||
struct stat64 file_info;
|
struct stat file_info;
|
||||||
|
|
||||||
std::string copy(filename);
|
std::string copy(filename);
|
||||||
StripTailDirSlashes(copy);
|
StripTailDirSlashes(copy);
|
||||||
|
@ -77,7 +72,7 @@ bool Exists(const std::string& filename)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info);
|
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info);
|
||||||
#else
|
#else
|
||||||
int result = stat64(copy.c_str(), &file_info);
|
int result = stat(copy.c_str(), &file_info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (result == 0);
|
return (result == 0);
|
||||||
|
@ -86,7 +81,7 @@ bool Exists(const std::string& filename)
|
||||||
// Returns true if filename is a directory
|
// Returns true if filename is a directory
|
||||||
bool IsDirectory(const std::string& filename)
|
bool IsDirectory(const std::string& filename)
|
||||||
{
|
{
|
||||||
struct stat64 file_info;
|
struct stat file_info;
|
||||||
|
|
||||||
std::string copy(filename);
|
std::string copy(filename);
|
||||||
StripTailDirSlashes(copy);
|
StripTailDirSlashes(copy);
|
||||||
|
@ -94,7 +89,7 @@ bool IsDirectory(const std::string& filename)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info);
|
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info);
|
||||||
#else
|
#else
|
||||||
int result = stat64(copy.c_str(), &file_info);
|
int result = stat(copy.c_str(), &file_info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
|
@ -381,11 +376,11 @@ u64 GetSize(const std::string& filename)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct stat64 buf;
|
struct stat buf;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (_tstat64(UTF8ToTStr(filename).c_str(), &buf) == 0)
|
if (_tstat64(UTF8ToTStr(filename).c_str(), &buf) == 0)
|
||||||
#else
|
#else
|
||||||
if (stat64(filename.c_str(), &buf) == 0)
|
if (stat(filename.c_str(), &buf) == 0)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
DEBUG_LOG(COMMON, "GetSize: %s: %lld", filename.c_str(), (long long)buf.st_size);
|
DEBUG_LOG(COMMON, "GetSize: %s: %lld", filename.c_str(), (long long)buf.st_size);
|
||||||
|
@ -399,8 +394,8 @@ u64 GetSize(const std::string& filename)
|
||||||
// Overloaded GetSize, accepts file descriptor
|
// Overloaded GetSize, accepts file descriptor
|
||||||
u64 GetSize(const int fd)
|
u64 GetSize(const int fd)
|
||||||
{
|
{
|
||||||
struct stat64 buf;
|
struct stat buf;
|
||||||
if (fstat64(fd, &buf) != 0)
|
if (fstat(fd, &buf) != 0)
|
||||||
{
|
{
|
||||||
ERROR_LOG(COMMON, "GetSize: stat failed %i: %s", fd, GetLastErrorMsg().c_str());
|
ERROR_LOG(COMMON, "GetSize: stat failed %i: %s", fd, GetLastErrorMsg().c_str());
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue