engine: common: filesystem: speed up directory existense check on POSIX by using stat() instead of opendir()

This commit is contained in:
Alibek Omarov 2022-05-05 05:03:47 +03:00
parent 81b01ac561
commit 4fbd96d201
1 changed files with 11 additions and 14 deletions

View File

@ -2477,7 +2477,7 @@ qboolean FS_SysFileExists( const char *path, qboolean caseinsensitive )
close( desc );
return true;
#else
#elif XASH_POSIX
int ret;
struct stat buf;
@ -2495,6 +2495,8 @@ qboolean FS_SysFileExists( const char *path, qboolean caseinsensitive )
return false;
return S_ISREG( buf.st_mode );
#else
#error
#endif
}
@ -2529,23 +2531,18 @@ qboolean FS_SysFolderExists( const char *path )
DWORD dwFlags = GetFileAttributes( path );
return ( dwFlags != -1 ) && ( dwFlags & FILE_ATTRIBUTE_DIRECTORY );
#else
DIR *dir = opendir( path );
#elif XASH_POSIX
struct stat buf;
if( dir )
{
closedir( dir );
return true;
}
else if( (errno == ENOENT) || (errno == ENOTDIR) )
if( stat( path, &buf ) < 0 )
{
Con_Reportf( S_ERROR "FS_SysFolderExists: problem while opening dir: %s\n", strerror( errno ));
return false;
}
else
{
Con_Reportf( S_ERROR "FS_SysFolderExists: problem while opening dir: %s\n", strerror( errno ) );
return false;
}
return S_ISDIR( buf.st_mode );
#else
#error
#endif
}