diff options
-rw-r--r-- | common/file.cpp | 24 | ||||
-rw-r--r-- | common/file.h | 5 |
2 files changed, 22 insertions, 7 deletions
diff --git a/common/file.cpp b/common/file.cpp index 0fa6993148..c4baebcd37 100644 --- a/common/file.cpp +++ b/common/file.cpp @@ -107,13 +107,29 @@ static FILE *fopenNoCase(const String &filename, const String &directory, const } void File::addDefaultDirectory(const String &directory) { - addDefaultDirectoryRecursive(directory, 1); + FilesystemNode dir(directory); + addDefaultDirectoryRecursive(dir, 1); } void File::addDefaultDirectoryRecursive(const String &directory, int level) { + FilesystemNode dir(directory); + addDefaultDirectoryRecursive(dir, level); +} + +void File::addDefaultDirectory(const FilesystemNode &directory) { + addDefaultDirectoryRecursive(directory, 1); +} + +void File::addDefaultDirectoryRecursive(const FilesystemNode &dir, int level) { if (level <= 0) return; + // Abort if this isn't a directory! + if (!dir.isDirectory()) + return; + + const String &directory(dir.path()); + if (!_defaultDirectories) _defaultDirectories = new StringIntMap; @@ -122,12 +138,6 @@ void File::addDefaultDirectoryRecursive(const String &directory, int level) { if (_defaultDirectories->contains(directory) && (*_defaultDirectories)[directory] >= level) return; - FilesystemNode dir(directory.c_str()); - - // ... and abort if this isn't a directory! - if (!dir.isDirectory()) - return; - (*_defaultDirectories)[directory] = level; if (!_filesMap) diff --git a/common/file.h b/common/file.h index 76bee32024..fd90437ef2 100644 --- a/common/file.h +++ b/common/file.h @@ -54,7 +54,12 @@ public: static void addDefaultDirectory(const String &directory); static void addDefaultDirectoryRecursive(const String &directory, int level = 4); + + static void addDefaultDirectory(const FilesystemNode &directory); + static void addDefaultDirectoryRecursive(const FilesystemNode &directory, int level = 4); + static void resetDefaultDirectories(); + File(); virtual ~File(); |