diff options
author | Philipp Sehmisch <tmw@crushnet.org> | 2007-02-20 23:45:51 +0000 |
---|---|---|
committer | Philipp Sehmisch <tmw@crushnet.org> | 2007-02-20 23:45:51 +0000 |
commit | 7cb624d0e6a2844360f28fdb8390f866aa3393c7 (patch) | |
tree | 1444fa899a8266072472cc1045ffb503bcab5ee1 /src/resources | |
parent | 6f4c416887d2a006a13dbd4e54932d46b59b0b17 (diff) | |
download | mana-7cb624d0e6a2844360f28fdb8390f866aa3393c7.tar.gz mana-7cb624d0e6a2844360f28fdb8390f866aa3393c7.tar.bz2 mana-7cb624d0e6a2844360f28fdb8390f866aa3393c7.tar.xz mana-7cb624d0e6a2844360f28fdb8390f866aa3393c7.zip |
Added support for customdata directory.
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/resourcemanager.cpp | 27 | ||||
-rw-r--r-- | src/resources/resourcemanager.h | 8 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index 4ed316cf..37a82b0c 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -109,6 +109,33 @@ ResourceManager::addToSearchPath(const std::string &path, bool append) PHYSFS_addToSearchPath(path.c_str(), append ? 1 : 0); } +void +ResourceManager::searchAndAddArchives(const std::string &path, + const std::string &ext, + bool append) +{ + const char *dirSep = PHYSFS_getDirSeparator(); + char **list = PHYSFS_enumerateFiles(path.c_str()); + + for (char **i = list; *i != NULL; i++) + { + size_t len = strlen(*i); + + if (len > ext.length() && !ext.compare((*i)+(len - ext.length()))) + { + std::string file, realPath, archive; + + file = path + (*i); + realPath = std::string(PHYSFS_getRealDir(file.c_str())); + archive = realPath + dirSep + file; + + addToSearchPath(archive, append); + } + } + + PHYSFS_freeList(list); +} + bool ResourceManager::mkdir(const std::string &path) { diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h index d458f96e..e176e337 100644 --- a/src/resources/resourcemanager.h +++ b/src/resources/resourcemanager.h @@ -83,6 +83,14 @@ class ResourceManager addToSearchPath(const std::string &path, bool append); /** + * Searches for zip files and adds them to the search path. + */ + void + searchAndAddArchives(const std::string &path, + const std::string &ext, + bool append); + + /** * Creates a directory in the write path */ bool |