diff options
| author | Léo Lam <leo@innovatetechnologi.es> | 2017-06-16 12:31:26 +0200 |
|---|---|---|
| committer | Léo Lam <leo@innovatetechnologi.es> | 2017-06-16 12:31:26 +0200 |
| commit | aa63199977a21fcb78c371b025166ff7affc9e33 (patch) | |
| tree | dd87a975f65533312814908000cc915f5fa1e88b /Source/Core/Common/FileUtil.cpp | |
| parent | 9c8e26bdff4a074f1a58f5fa23a818233e6890f4 (diff) | |
FileUtil: Don't manually strip trailing slashes
POSIX allows one or more trailing slashes for directories.
From POSIX.1-2008, section 3.271 (Base Definitions / Pathname):
> A pathname can optionally contain one or more trailing <slash>
> characters. Multiple successive <slash> characters are considered to
> be the same as one <slash>, except for the case of exactly two
> leading <slash> characters.
On Windows, the extra trailing slashes are ignored for directories too.
Diffstat (limited to 'Source/Core/Common/FileUtil.cpp')
| -rw-r--r-- | Source/Core/Common/FileUtil.cpp | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index 0a1a425830..3c6c6449d3 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -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,13 +70,10 @@ 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) |
