FileSystem: Fix size being unfilled on Linux

Fixes BIOS detection.
This commit is contained in:
Connor McLaughlin 2020-09-23 12:15:23 +10:00
parent 78f06fb711
commit cd0199a07a
1 changed files with 17 additions and 12 deletions

View File

@ -1200,6 +1200,7 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co
}
// iterate results
PathString full_path;
struct dirent* pDirEnt;
while ((pDirEnt = readdir(pDir)) != nullptr)
{
@ -1215,17 +1216,28 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co
continue;
}
if (ParentPath != nullptr)
full_path.Format("%s/%s/%s/%s", OriginPath, ParentPath, Path, pDirEnt->d_name);
else if (Path != nullptr)
full_path.Format("%s/%s/%s", OriginPath, Path, pDirEnt->d_name);
else
full_path.Format("%s/%s", OriginPath, pDirEnt->d_name);
FILESYSTEM_FIND_DATA outData;
outData.Attributes = 0;
#ifdef __HAIKU__
struct stat sDir;
if (stat(full_path, &sDir) < 0)
continue;
stat(pDirEnt->d_name, &sDir);
if (S_ISDIR(sDir.st_mode))
#else
if (pDirEnt->d_type == DT_DIR)
struct stat64 sDir;
if (stat64(full_path, &sDir) < 0)
continue;
#endif
if (S_ISDIR(sDir.st_mode))
{
if (Flags & FILESYSTEM_FIND_RECURSIVE)
{
@ -1252,8 +1264,7 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co
continue;
}
// if (wfd.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
// outData.Attributes |= FILESYSTEM_FILE_ATTRIBUTE_READ_ONLY;
outData.Size = static_cast<u64>(sDir.st_size);
// match the filename
if (hasWildCards)
@ -1271,13 +1282,7 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co
// TODO string formatter, clean this mess..
if (!(Flags & FILESYSTEM_FIND_RELATIVE_PATHS))
{
if (ParentPath != nullptr)
outData.FileName =
StringUtil::StdStringFromFormat("%s/%s/%s/%s", OriginPath, ParentPath, Path, pDirEnt->d_name);
else if (Path != nullptr)
outData.FileName = StringUtil::StdStringFromFormat("%s/%s/%s", OriginPath, Path, pDirEnt->d_name);
else
outData.FileName = StringUtil::StdStringFromFormat("%s/%s", OriginPath, pDirEnt->d_name);
outData.FileName = std::string(full_path);
}
else
{