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! // REMEMBER: strdup considered harmful!
namespace File 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 // Returns true if file filename exists
bool Exists(const std::string& filename) bool Exists(const std::string& filename)
{ {
struct stat file_info; struct stat file_info;
std::string copy(filename);
StripTailDirSlashes(copy);
#ifdef _WIN32 #ifdef _WIN32
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info); int result = _tstat64(UTF8ToTStr(filename).c_str(), &file_info);
#else #else
int result = stat(copy.c_str(), &file_info); int result = stat(filename.c_str(), &file_info);
#endif #endif
return (result == 0); return (result == 0);
@ -84,19 +70,15 @@ bool IsDirectory(const std::string& filename)
{ {
struct stat file_info; struct stat file_info;
std::string copy(filename);
StripTailDirSlashes(copy);
#ifdef _WIN32 #ifdef _WIN32
int result = _tstat64(UTF8ToTStr(copy).c_str(), &file_info); int result = _tstat64(UTF8ToTStr(filename).c_str(), &file_info);
#else #else
int result = stat(copy.c_str(), &file_info); int result = stat(filename.c_str(), &file_info);
#endif #endif
if (result < 0) if (result < 0)
{ {
WARN_LOG(COMMON, "IsDirectory: stat failed on %s: %s", filename.c_str(), WARN_LOG(COMMON, "IsDirectory: stat failed on %s: %s", filename.c_str(), strerror(errno));
GetLastErrorMsg().c_str());
return false; return false;
} }