From 9c074fd16341b4cc4e6d96aa0bd44a15a2553ee7 Mon Sep 17 00:00:00 2001 From: Tobia Tesan Date: Thu, 31 Mar 2016 15:42:14 +0200 Subject: WINTERMUTE: Remove commented lines from dctypes --- engines/wintermute/dctypes.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/engines/wintermute/dctypes.h b/engines/wintermute/dctypes.h index 90340f437d..571ce21931 100644 --- a/engines/wintermute/dctypes.h +++ b/engines/wintermute/dctypes.h @@ -37,9 +37,6 @@ namespace Wintermute { -//typedef std::string AnsiString; -//typedef std::string Utf8String; -//typedef std::wstring WideString; typedef Common::String AnsiString; typedef Common::String Utf8String; typedef Common::U32String WideString; -- cgit v1.2.3 From b981edd1f76ab303df3028e4134ee54c787cab5a Mon Sep 17 00:00:00 2001 From: Tobia Tesan Date: Thu, 31 Mar 2016 17:05:13 +0200 Subject: WINTERMUTE: Turn AnsiString into Common::String in PathUtil AnsiString is already typedefd to Common::String --- engines/wintermute/utils/path_util.cpp | 32 ++++++++++++++++---------------- engines/wintermute/utils/path_util.h | 14 +++++++------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/engines/wintermute/utils/path_util.cpp b/engines/wintermute/utils/path_util.cpp index 71311713af..db986061f8 100644 --- a/engines/wintermute/utils/path_util.cpp +++ b/engines/wintermute/utils/path_util.cpp @@ -32,8 +32,8 @@ namespace Wintermute { ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::unifySeparators(const AnsiString &path) { - AnsiString newPath = path; +Common::String PathUtil::unifySeparators(const Common::String &path) { + Common::String newPath = path; for (uint32 i = 0; i < newPath.size(); i++) { if (newPath[i] == '\\') { @@ -45,16 +45,16 @@ AnsiString PathUtil::unifySeparators(const AnsiString &path) { } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::normalizeFileName(const AnsiString &path) { - AnsiString newPath = unifySeparators(path); +Common::String PathUtil::normalizeFileName(const Common::String &path) { + Common::String newPath = unifySeparators(path); newPath.toLowercase(); return newPath; } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::combine(const AnsiString &path1, const AnsiString &path2) { - AnsiString newPath1 = unifySeparators(path1); - AnsiString newPath2 = unifySeparators(path2); +Common::String PathUtil::combine(const Common::String &path1, const Common::String &path2) { + Common::String newPath1 = unifySeparators(path1); + Common::String newPath2 = unifySeparators(path2); if (!newPath1.hasSuffix("/") && !newPath2.hasPrefix("/")) { newPath1 += "/"; @@ -64,15 +64,15 @@ AnsiString PathUtil::combine(const AnsiString &path1, const AnsiString &path2) { } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getDirectoryName(const AnsiString &path) { - AnsiString newPath = unifySeparators(path); +Common::String PathUtil::getDirectoryName(const Common::String &path) { + Common::String newPath = unifySeparators(path); Common::String filename = getFileName(path); return Common::String(path.c_str(), path.size() - filename.size()); } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getFileName(const AnsiString &path) { - AnsiString newPath = unifySeparators(path); +Common::String PathUtil::getFileName(const Common::String &path) { + Common::String newPath = unifySeparators(path); Common::String lastPart = Common::lastPathComponent(newPath, '/'); if (lastPart[lastPart.size() - 1 ] != '/') { return lastPart; @@ -82,10 +82,10 @@ AnsiString PathUtil::getFileName(const AnsiString &path) { } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getFileNameWithoutExtension(const AnsiString &path) { - AnsiString fileName = getFileName(path); +Common::String PathUtil::getFileNameWithoutExtension(const Common::String &path) { + Common::String fileName = getFileName(path); // TODO: Prettify this. - AnsiString extension = Common::lastPathComponent(fileName, '.'); + Common::String extension = Common::lastPathComponent(fileName, '.'); for (uint32 i = 0; i < extension.size() + 1; i++) { fileName.deleteLastChar(); } @@ -93,8 +93,8 @@ AnsiString PathUtil::getFileNameWithoutExtension(const AnsiString &path) { } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getExtension(const AnsiString &path) { - AnsiString fileName = getFileName(path); +Common::String PathUtil::getExtension(const Common::String &path) { + Common::String fileName = getFileName(path); return Common::lastPathComponent(path, '.'); } diff --git a/engines/wintermute/utils/path_util.h b/engines/wintermute/utils/path_util.h index 264dc5d241..cc64fb9347 100644 --- a/engines/wintermute/utils/path_util.h +++ b/engines/wintermute/utils/path_util.h @@ -35,13 +35,13 @@ namespace Wintermute { class PathUtil { public: - static AnsiString unifySeparators(const AnsiString &path); - static AnsiString normalizeFileName(const AnsiString &path); - static AnsiString combine(const AnsiString &path1, const AnsiString &path2); - static AnsiString getDirectoryName(const AnsiString &path); - static AnsiString getFileName(const AnsiString &path); - static AnsiString getFileNameWithoutExtension(const AnsiString &path); - static AnsiString getExtension(const AnsiString &path); + static Common::String unifySeparators(const Common::String &path); + static Common::String normalizeFileName(const Common::String &path); + static Common::String combine(const Common::String &path1, const Common::String &path2); + static Common::String getDirectoryName(const Common::String &path); + static Common::String getFileName(const Common::String &path); + static Common::String getFileNameWithoutExtension(const Common::String &path); + static Common::String getExtension(const Common::String &path); }; } // End of namespace Wintermute -- cgit v1.2.3 From e3fdd8d5fe5b739b28c67539bbdb0b596f9dacbe Mon Sep 17 00:00:00 2001 From: Tobia Tesan Date: Thu, 31 Mar 2016 16:06:01 +0200 Subject: WINTERMUTE: Add tests for engines/wintermute/path_utils.h --- test/engines/wintermute/path_utils.h | 200 +++++++++++++++++++++++++++++++++++ test/module.mk | 4 +- 2 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 test/engines/wintermute/path_utils.h diff --git a/test/engines/wintermute/path_utils.h b/test/engines/wintermute/path_utils.h new file mode 100644 index 0000000000..c3f1776231 --- /dev/null +++ b/test/engines/wintermute/path_utils.h @@ -0,0 +1,200 @@ +#include +#include "engines/wintermute/utils/path_util.h" +/** + * Test suite for the functions in engines/wintermute/utils/path_util.h + * + * NOTE: This is not a prescription; + * this was not written by the original engine author; + * this was not written by the engine porter. + * + * It might, however, help to spot variations in behavior that are introduced by modifications + */ + +class PathUtilTestSuite : public CxxTest::TestSuite { + public: + const Common::String unixPath; + const Common::String unixCapPath; + const Common::String windowsPath; + const Common::String windowsCapPath; + const Common::String emptyString; + const Common::String dualExtPath; + const Common::String manyExtPath; + const Common::String mixedSlashesPath1; + const Common::String mixedSlashesPath2; + const Common::String unixRelativePath; + const Common::String windowsRelativePath; + PathUtilTestSuite () : + unixPath("/some/file.ext"), + unixCapPath("/SOME/FILE.EXT"), + windowsPath("C:\\some\\file.ext"), + windowsCapPath("C:\\SOME\\FILE.EXT"), + emptyString(""), + dualExtPath("/some/file.tar.gz"), + manyExtPath("/some/file.tar.bz2.gz.zip"), + mixedSlashesPath1("C:\\this/IS_REALLY\\weird.exe"), + mixedSlashesPath2("/pretty\\weird/indeed.txt"), + unixRelativePath("some/file.ext"), + windowsRelativePath("some\\file.ext") + {} + void test_getdirectoryname() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixPath), + Common::String("/some/") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixCapPath), + Common::String("/SOME/") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsPath), + Common::String("C:\\some\\") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsCapPath), + Common::String("C:\\SOME\\") + ); + } + + void test_getfilename() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixPath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixCapPath), + Common::String("FILE.EXT") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsPath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsCapPath), + Common::String("FILE.EXT") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixRelativePath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsRelativePath), + Common::String("file.ext") + ); + } + + void test_getextension() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(windowsPath), + Common::String("ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(windowsCapPath), + Common::String("EXT") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(dualExtPath), + Common::String("gz") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(manyExtPath), + Common::String("zip") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(unixRelativePath), + Common::String("ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(windowsRelativePath), + Common::String("ext") + ); + } + + void test_getfilenamewithoutextension() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(windowsPath), + Common::String("file") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath), + Common::String("FILE") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(dualExtPath), + Common::String("file.tar") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(manyExtPath), + Common::String("file.tar.bz2.gz") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(unixRelativePath), + Common::String("file") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(windowsRelativePath), + Common::String("file") + ); + } + + void test_combine_identity() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(windowsPath) + + "." + + Wintermute::PathUtil::getExtension(windowsPath), + windowsPath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsCapPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath) + + "." + + Wintermute::PathUtil::getExtension(windowsCapPath), + windowsCapPath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixCapPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(unixCapPath) + + "." + + Wintermute::PathUtil::getExtension(unixCapPath), + unixCapPath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(manyExtPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(manyExtPath) + + "." + + Wintermute::PathUtil::getExtension(manyExtPath), + manyExtPath + ); + } + + void test_normalize() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(windowsCapPath), + Common::String("c:/some/file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(windowsPath), + Common::String("c:/some/file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(mixedSlashesPath1), + Common::String("c:/this/is_really/weird.exe") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(mixedSlashesPath2), + Common::String("/pretty/weird/indeed.txt") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(emptyString), + emptyString + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(unixRelativePath), + unixRelativePath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(windowsRelativePath), + unixRelativePath // NOT windows + ); + } +}; diff --git a/test/module.mk b/test/module.mk index 11ee6bd200..da469b4263 100644 --- a/test/module.mk +++ b/test/module.mk @@ -5,8 +5,8 @@ # ###################################################################### -TESTS := $(srcdir)/test/common/*.h $(srcdir)/test/audio/*.h -TEST_LIBS := audio/libaudio.a common/libcommon.a +TESTS := $(srcdir)/test/common/*.h $(srcdir)/test/audio/*.h $(srcdir)/test/engines/wintermute/*.h +TEST_LIBS := audio/libaudio.a common/libcommon.a engines/wintermute/libwintermute.a # TEST_FLAGS := --runner=StdioPrinter --no-std --no-eh --include=$(srcdir)/test/cxxtest_mingw.h -- cgit v1.2.3 From 93394902368a0fb2c25647f0d6205f5a43282933 Mon Sep 17 00:00:00 2001 From: Tobia Tesan Date: Mon, 26 Dec 2016 10:42:29 +0100 Subject: WINTERMUTE: only access -1th char of string if length > 0 in getFileName Fixes #6594 --- engines/wintermute/utils/path_util.cpp | 10 +++++++--- engines/wintermute/utils/path_util.h | 1 + test/engines/wintermute/path_utils.h | 24 ++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/engines/wintermute/utils/path_util.cpp b/engines/wintermute/utils/path_util.cpp index db986061f8..60a07f0bf0 100644 --- a/engines/wintermute/utils/path_util.cpp +++ b/engines/wintermute/utils/path_util.cpp @@ -63,6 +63,10 @@ Common::String PathUtil::combine(const Common::String &path1, const Common::Stri return newPath1 + newPath2; } +bool PathUtil::hasTrailingSlash(const Common::String &path) { + return (path.size() > 0 && path[path.size() - 1 ] == '/'); +} + ////////////////////////////////////////////////////////////////////////// Common::String PathUtil::getDirectoryName(const Common::String &path) { Common::String newPath = unifySeparators(path); @@ -74,10 +78,10 @@ Common::String PathUtil::getDirectoryName(const Common::String &path) { Common::String PathUtil::getFileName(const Common::String &path) { Common::String newPath = unifySeparators(path); Common::String lastPart = Common::lastPathComponent(newPath, '/'); - if (lastPart[lastPart.size() - 1 ] != '/') { - return lastPart; + if (hasTrailingSlash(newPath)) { + return Common::String(""); } else { - return path; + return lastPart; } } diff --git a/engines/wintermute/utils/path_util.h b/engines/wintermute/utils/path_util.h index cc64fb9347..8050cdfae2 100644 --- a/engines/wintermute/utils/path_util.h +++ b/engines/wintermute/utils/path_util.h @@ -42,6 +42,7 @@ public: static Common::String getFileName(const Common::String &path); static Common::String getFileNameWithoutExtension(const Common::String &path); static Common::String getExtension(const Common::String &path); + static bool hasTrailingSlash(const Common::String &path); }; } // End of namespace Wintermute diff --git a/test/engines/wintermute/path_utils.h b/test/engines/wintermute/path_utils.h index c3f1776231..3cacf47fd9 100644 --- a/test/engines/wintermute/path_utils.h +++ b/test/engines/wintermute/path_utils.h @@ -53,6 +53,10 @@ class PathUtilTestSuite : public CxxTest::TestSuite { Wintermute::PathUtil::getDirectoryName(windowsCapPath), Common::String("C:\\SOME\\") ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(emptyString), + Common::String("") + ); } void test_getfilename() { @@ -72,6 +76,10 @@ class PathUtilTestSuite : public CxxTest::TestSuite { Wintermute::PathUtil::getFileName(windowsCapPath), Common::String("FILE.EXT") ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(emptyString), + Common::String("") + ); TS_ASSERT_EQUALS( Wintermute::PathUtil::getFileName(unixRelativePath), Common::String("file.ext") @@ -80,6 +88,14 @@ class PathUtilTestSuite : public CxxTest::TestSuite { Wintermute::PathUtil::getFileName(windowsRelativePath), Common::String("file.ext") ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsDirPath), + Common::String("") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixDirPath), + Common::String("") + ); } void test_getextension() { @@ -91,6 +107,10 @@ class PathUtilTestSuite : public CxxTest::TestSuite { Wintermute::PathUtil::getExtension(windowsCapPath), Common::String("EXT") ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(emptyString), + Common::String("") + ); TS_ASSERT_EQUALS( Wintermute::PathUtil::getExtension(dualExtPath), Common::String("gz") @@ -118,6 +138,10 @@ class PathUtilTestSuite : public CxxTest::TestSuite { Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath), Common::String("FILE") ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(emptyString), + Common::String("") + ); TS_ASSERT_EQUALS( Wintermute::PathUtil::getFileNameWithoutExtension(dualExtPath), Common::String("file.tar") -- cgit v1.2.3 From 72376681afad3e57ffa2134d76ad649a38c86023 Mon Sep 17 00:00:00 2001 From: Tobia Tesan Date: Mon, 26 Dec 2016 11:55:06 +0100 Subject: WINTERMUTE: Try to "correctly" handle dir paths I put scare quotes around "correctly" because I can't swear this is the intended behaviour of the original interpreter. I don't think accessing filenames that end with / in the .DCPs is even defined behaviour, so this is a best guess. --- engines/wintermute/utils/path_util.cpp | 6 +++++- test/engines/wintermute/path_utils.h | 14 +++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/engines/wintermute/utils/path_util.cpp b/engines/wintermute/utils/path_util.cpp index 60a07f0bf0..8518f8968f 100644 --- a/engines/wintermute/utils/path_util.cpp +++ b/engines/wintermute/utils/path_util.cpp @@ -71,7 +71,11 @@ bool PathUtil::hasTrailingSlash(const Common::String &path) { Common::String PathUtil::getDirectoryName(const Common::String &path) { Common::String newPath = unifySeparators(path); Common::String filename = getFileName(path); - return Common::String(path.c_str(), path.size() - filename.size()); + if (hasTrailingSlash(newPath)) { + return path; + } else { + return Common::String(path.c_str(), path.size() - filename.size()); + } } ////////////////////////////////////////////////////////////////////////// diff --git a/test/engines/wintermute/path_utils.h b/test/engines/wintermute/path_utils.h index 3cacf47fd9..26f3404396 100644 --- a/test/engines/wintermute/path_utils.h +++ b/test/engines/wintermute/path_utils.h @@ -23,6 +23,8 @@ class PathUtilTestSuite : public CxxTest::TestSuite { const Common::String mixedSlashesPath2; const Common::String unixRelativePath; const Common::String windowsRelativePath; + const Common::String unixDirPath; + const Common::String windowsDirPath; PathUtilTestSuite () : unixPath("/some/file.ext"), unixCapPath("/SOME/FILE.EXT"), @@ -34,7 +36,9 @@ class PathUtilTestSuite : public CxxTest::TestSuite { mixedSlashesPath1("C:\\this/IS_REALLY\\weird.exe"), mixedSlashesPath2("/pretty\\weird/indeed.txt"), unixRelativePath("some/file.ext"), - windowsRelativePath("some\\file.ext") + windowsRelativePath("some\\file.ext"), + unixDirPath("/some/dir/"), + windowsDirPath("C:\\some\\dir\\") {} void test_getdirectoryname() { TS_ASSERT_EQUALS( @@ -57,6 +61,14 @@ class PathUtilTestSuite : public CxxTest::TestSuite { Wintermute::PathUtil::getDirectoryName(emptyString), Common::String("") ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixDirPath), + Common::String("/some/dir/") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsDirPath), + Common::String("C:\\some\\dir\\") + ); } void test_getfilename() { -- cgit v1.2.3 From 257d7e8fe04f942d7c85d27181601774cb853463 Mon Sep 17 00:00:00 2001 From: Ryper_Zsolt Date: Mon, 21 Mar 2016 21:42:39 +0100 Subject: WINTERMUTE: Don't mix different path separators. Fixes #7068 --- engines/wintermute/base/file/base_disk_file.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp index 82a9e24dfb..b051c2ec39 100644 --- a/engines/wintermute/base/file/base_disk_file.cpp +++ b/engines/wintermute/base/file/base_disk_file.cpp @@ -135,7 +135,14 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) { } // File wasn't found in SearchMan, try to parse the path as a relative path. if (!file) { - Common::FSNode searchNode = getNodeForRelativePath(filename); + Common::String filenameBackSlash = filename; + for (size_t i = 0; i < filenameBackSlash.size(); i++) { + if (filenameBackSlash[i] == '/') { + filenameBackSlash.setChar('\\', i); + } + } + + Common::FSNode searchNode = getNodeForRelativePath(filenameBackSlash); if (searchNode.exists() && !searchNode.isDirectory() && searchNode.isReadable()) { file = searchNode.createReadStream(); } -- cgit v1.2.3 From a14d3865ad4fbe2cf688e180642bdc5103c5280b Mon Sep 17 00:00:00 2001 From: Tobia Tesan Date: Mon, 26 Dec 2016 14:34:22 +0100 Subject: WINTERMUTE: Use PathUtil::normalizeFileName in correctSlashes --- engines/wintermute/base/file/base_disk_file.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp index b051c2ec39..30c502665b 100644 --- a/engines/wintermute/base/file/base_disk_file.cpp +++ b/engines/wintermute/base/file/base_disk_file.cpp @@ -29,6 +29,7 @@ #include "engines/wintermute/dcgf.h" #include "engines/wintermute/base/file/base_disk_file.h" #include "engines/wintermute/base/base_file_manager.h" +#include "engines/wintermute/utils/path_util.h" #include "common/stream.h" #include "common/memstream.h" #include "common/file.h" @@ -37,6 +38,7 @@ #include "common/tokenizer.h" #include "common/config-manager.h" + namespace Wintermute { void correctSlashes(Common::String &fileName) { @@ -135,14 +137,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) { } // File wasn't found in SearchMan, try to parse the path as a relative path. if (!file) { - Common::String filenameBackSlash = filename; - for (size_t i = 0; i < filenameBackSlash.size(); i++) { - if (filenameBackSlash[i] == '/') { - filenameBackSlash.setChar('\\', i); - } - } - - Common::FSNode searchNode = getNodeForRelativePath(filenameBackSlash); + Common::FSNode searchNode = getNodeForRelativePath(PathUtil::normalizeFileName(filename)); if (searchNode.exists() && !searchNode.isDirectory() && searchNode.isReadable()) { file = searchNode.createReadStream(); } -- cgit v1.2.3