Merge pull request #5625 from leoetlino/fileutil-fixes

FileUtil fixes
This commit is contained in:
Leo Lam 2017-06-16 18:31:50 +02:00 committed by GitHub
commit cc9bd0b0f0
1 changed files with 5 additions and 23 deletions

View File

@ -51,29 +51,15 @@
// REMEMBER: strdup considered harmful!
namespace File
{
// Remove any ending forward slashes from directory paths
// Modifies argument.
static void StripTailDirSlashes(std::string& fname)
{
if (fname.length() > 1)
{
while (fname.back() == DIR_SEP_CHR)
fname.pop_back();
}
}
// Returns true if file filename exists
bool Exists(const std::string& filename)
{
struct stat file_info;
std::string copy(filename);
StripTailDirSlashes(copy);
#ifdef _WIN32
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info);
int result = _tstat64(UTF8ToTStr(filename).c_str(), &file_info);
#else
int result = stat(copy.c_str(), &file_info);
int result = stat(filename.c_str(), &file_info);
#endif
return (result == 0);
@ -84,19 +70,15 @@ bool IsDirectory(const std::string& filename)
{
struct stat file_info;
std::string copy(filename);
StripTailDirSlashes(copy);
#ifdef _WIN32
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info);
int result = _tstat64(UTF8ToTStr(filename).c_str(), &file_info);
#else
int result = stat(copy.c_str(), &file_info);
int result = stat(filename.c_str(), &file_info);
#endif
if (result < 0)
{
WARN_LOG(COMMON, "IsDirectory: stat failed on %s: %s", filename.c_str(),
GetLastErrorMsg().c_str());
WARN_LOG(COMMON, "IsDirectory: stat failed on %s: %s", filename.c_str(), strerror(errno));
return false;
}