FileSystem: Drop use of stat64()
We define _FILE_OFFSET_BITS on 32-bit Linux anyway.
This commit is contained in:
parent
2e96931c32
commit
0815aedca2
|
@ -1402,18 +1402,12 @@ bool FileSystem::CopyFilePath(const char* source, const char* destination, bool
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
||||||
static u32 TranslateWin32Attributes(u32 Win32Attributes)
|
static u32 TranslateWin32Attributes(u32 w32attrs)
|
||||||
{
|
{
|
||||||
u32 r = 0;
|
return ((w32attrs & FILE_ATTRIBUTE_DIRECTORY) ? FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY : 0) |
|
||||||
|
((w32attrs & FILE_ATTRIBUTE_READONLY) ? FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY : 0) |
|
||||||
if (Win32Attributes & FILE_ATTRIBUTE_DIRECTORY)
|
((w32attrs & FILE_ATTRIBUTE_COMPRESSED) ? FILESYSTEM_FILE_ATTRIBUTE_COMPRESSED : 0) |
|
||||||
r |= FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY;
|
((w32attrs & FILE_ATTRIBUTE_REPARSE_POINT) ? FILESYSTEM_FILE_ATTRIBUTE_LINK : 0);
|
||||||
if (Win32Attributes & FILE_ATTRIBUTE_READONLY)
|
|
||||||
r |= FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY;
|
|
||||||
if (Win32Attributes & FILE_ATTRIBUTE_COMPRESSED)
|
|
||||||
r |= FILESYSTEM_FILE_ATTRIBUTE_COMPRESSED;
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 RecursiveFindFiles(const char* origin_path, const char* parent_path, const char* path, const char* pattern,
|
static u32 RecursiveFindFiles(const char* origin_path, const char* parent_path, const char* path, const char* pattern,
|
||||||
|
@ -1467,7 +1461,7 @@ static u32 RecursiveFindFiles(const char* origin_path, const char* parent_path,
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
FILESYSTEM_FIND_DATA outData;
|
FILESYSTEM_FIND_DATA outData;
|
||||||
outData.Attributes = 0;
|
outData.Attributes = TranslateWin32Attributes(wfd.dwFileAttributes);
|
||||||
|
|
||||||
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||||
{
|
{
|
||||||
|
@ -1503,8 +1497,6 @@ static u32 RecursiveFindFiles(const char* origin_path, const char* parent_path,
|
||||||
|
|
||||||
if (!(flags & FILESYSTEM_FIND_FOLDERS))
|
if (!(flags & FILESYSTEM_FIND_FOLDERS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
outData.Attributes |= FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1512,9 +1504,6 @@ static u32 RecursiveFindFiles(const char* origin_path, const char* parent_path,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
|
|
||||||
outData.Attributes |= FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY;
|
|
||||||
|
|
||||||
// match the filename
|
// match the filename
|
||||||
if (hasWildCards)
|
if (hasWildCards)
|
||||||
{
|
{
|
||||||
|
@ -2000,6 +1989,12 @@ bool FileSystem::SetPathCompression(const char* path, bool enable)
|
||||||
|
|
||||||
#elif !defined(__ANDROID__)
|
#elif !defined(__ANDROID__)
|
||||||
|
|
||||||
|
static u32 TranslateStatAttributes(struct stat& st)
|
||||||
|
{
|
||||||
|
return (S_ISDIR(st.st_mode) ? FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY : 0) |
|
||||||
|
(S_ISLNK(st.st_mode) ? FILESYSTEM_FILE_ATTRIBUTE_LINK : 0);
|
||||||
|
}
|
||||||
|
|
||||||
static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, const char* Path, const char* Pattern,
|
static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, const char* Path, const char* Pattern,
|
||||||
u32 Flags, FileSystem::FindResultsArray* pResults, std::vector<std::string>& visited)
|
u32 Flags, FileSystem::FindResultsArray* pResults, std::vector<std::string>& visited)
|
||||||
{
|
{
|
||||||
|
@ -2051,19 +2046,12 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co
|
||||||
else
|
else
|
||||||
full_path = fmt::format("{}/{}", OriginPath, pDirEnt->d_name);
|
full_path = fmt::format("{}/{}", OriginPath, pDirEnt->d_name);
|
||||||
|
|
||||||
FILESYSTEM_FIND_DATA outData;
|
|
||||||
outData.Attributes = 0;
|
|
||||||
|
|
||||||
#if defined(__HAIKU__) || defined(__APPLE__) || defined(__FreeBSD__)
|
|
||||||
struct stat sDir;
|
struct stat sDir;
|
||||||
if (stat(full_path.c_str(), &sDir) < 0)
|
if (stat(full_path.c_str(), &sDir) < 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
#else
|
FILESYSTEM_FIND_DATA outData;
|
||||||
struct stat64 sDir;
|
outData.Attributes = TranslateStatAttributes(sDir);
|
||||||
if (stat64(full_path.c_str(), &sDir) < 0)
|
|
||||||
continue;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (S_ISDIR(sDir.st_mode))
|
if (S_ISDIR(sDir.st_mode))
|
||||||
{
|
{
|
||||||
|
@ -2092,8 +2080,6 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co
|
||||||
|
|
||||||
if (!(Flags & FILESYSTEM_FIND_FOLDERS))
|
if (!(Flags & FILESYSTEM_FIND_FOLDERS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
outData.Attributes |= FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2200,28 +2186,16 @@ bool FileSystem::StatFile(const char* path, FILESYSTEM_STAT_DATA* sd)
|
||||||
if (path[0] == '\0')
|
if (path[0] == '\0')
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// stat file
|
// stat file
|
||||||
#if defined(__HAIKU__) || defined(__APPLE__) || defined(__FreeBSD__)
|
|
||||||
struct stat sysStatData;
|
struct stat sysStatData;
|
||||||
if (stat(path, &sysStatData) < 0)
|
if (stat(path, &sysStatData) < 0)
|
||||||
#else
|
|
||||||
struct stat64 sysStatData;
|
|
||||||
if (stat64(path, &sysStatData) < 0)
|
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// parse attributes
|
// parse attributes
|
||||||
sd->CreationTime = sysStatData.st_ctime;
|
sd->CreationTime = sysStatData.st_ctime;
|
||||||
sd->ModificationTime = sysStatData.st_mtime;
|
sd->ModificationTime = sysStatData.st_mtime;
|
||||||
sd->Attributes = 0;
|
sd->Attributes = TranslateStatAttributes(sysStatData);
|
||||||
if (S_ISDIR(sysStatData.st_mode))
|
sd->Size = S_ISREG(sysStatData.st_mode) ? sysStatData.st_size : 0;
|
||||||
sd->Attributes |= FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY;
|
|
||||||
|
|
||||||
// parse size
|
|
||||||
if (S_ISREG(sysStatData.st_mode))
|
|
||||||
sd->Size = sysStatData.st_size;
|
|
||||||
else
|
|
||||||
sd->Size = 0;
|
|
||||||
|
|
||||||
// ok
|
// ok
|
||||||
return true;
|
return true;
|
||||||
|
@ -2233,30 +2207,17 @@ bool FileSystem::StatFile(std::FILE* fp, FILESYSTEM_STAT_DATA* sd)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// stat file
|
// stat file
|
||||||
#if defined(__HAIKU__) || defined(__APPLE__) || defined(__FreeBSD__)
|
|
||||||
struct stat sysStatData;
|
struct stat sysStatData;
|
||||||
if (fstat(fd, &sysStatData) < 0)
|
if (fstat(fd, &sysStatData) < 0)
|
||||||
#else
|
|
||||||
struct stat64 sysStatData;
|
|
||||||
if (fstat64(fd, &sysStatData) < 0)
|
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// parse attributes
|
// parse attributes
|
||||||
sd->CreationTime = sysStatData.st_ctime;
|
sd->CreationTime = sysStatData.st_ctime;
|
||||||
sd->ModificationTime = sysStatData.st_mtime;
|
sd->ModificationTime = sysStatData.st_mtime;
|
||||||
sd->Attributes = 0;
|
sd->Attributes = TranslateStatAttributes(sysStatData);
|
||||||
if (S_ISDIR(sysStatData.st_mode))
|
sd->Size = S_ISREG(sysStatData.st_mode) ? sysStatData.st_size : 0;
|
||||||
sd->Attributes |= FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY;
|
|
||||||
|
|
||||||
// parse size
|
|
||||||
if (S_ISREG(sysStatData.st_mode))
|
|
||||||
sd->Size = sysStatData.st_size;
|
|
||||||
else
|
|
||||||
sd->Size = 0;
|
|
||||||
|
|
||||||
// ok
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2266,14 +2227,8 @@ bool FileSystem::FileExists(const char* path)
|
||||||
if (path[0] == '\0')
|
if (path[0] == '\0')
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// stat file
|
|
||||||
#if defined(__HAIKU__) || defined(__APPLE__) || defined(__FreeBSD__)
|
|
||||||
struct stat sysStatData;
|
struct stat sysStatData;
|
||||||
if (stat(path, &sysStatData) < 0)
|
if (stat(path, &sysStatData) < 0)
|
||||||
#else
|
|
||||||
struct stat64 sysStatData;
|
|
||||||
if (stat64(path, &sysStatData) < 0)
|
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (S_ISDIR(sysStatData.st_mode))
|
if (S_ISDIR(sysStatData.st_mode))
|
||||||
|
@ -2288,14 +2243,9 @@ bool FileSystem::DirectoryExists(const char* path)
|
||||||
if (path[0] == '\0')
|
if (path[0] == '\0')
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// stat file
|
// stat file
|
||||||
#if defined(__HAIKU__) || defined(__APPLE__) || defined(__FreeBSD__)
|
|
||||||
struct stat sysStatData;
|
struct stat sysStatData;
|
||||||
if (stat(path, &sysStatData) < 0)
|
if (stat(path, &sysStatData) < 0)
|
||||||
#else
|
|
||||||
struct stat64 sysStatData;
|
|
||||||
if (stat64(path, &sysStatData) < 0)
|
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (S_ISDIR(sysStatData.st_mode))
|
if (S_ISDIR(sysStatData.st_mode))
|
||||||
|
|
|
@ -25,9 +25,10 @@ class Error;
|
||||||
|
|
||||||
enum FILESYSTEM_FILE_ATTRIBUTES
|
enum FILESYSTEM_FILE_ATTRIBUTES
|
||||||
{
|
{
|
||||||
FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY = 1,
|
FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY = (1 << 0),
|
||||||
FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY = 2,
|
FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY = (1 << 1),
|
||||||
FILESYSTEM_FILE_ATTRIBUTE_COMPRESSED = 4,
|
FILESYSTEM_FILE_ATTRIBUTE_COMPRESSED = (1 << 2),
|
||||||
|
FILESYSTEM_FILE_ATTRIBUTE_LINK = (1 << 3),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FILESYSTEM_FIND_FLAGS
|
enum FILESYSTEM_FIND_FLAGS
|
||||||
|
|
Loading…
Reference in New Issue