diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-02-13 15:25:21 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-02-13 15:25:21 +0300 |
commit | 63f37017719d01f9ea72fb1f1e1722918a368755 (patch) | |
tree | 555c9d860becb70205bf2608bea2d869e2386b7e /src/utils/virtfs.cpp | |
parent | 20ba8c348fe5e4d3af16fd3775e74d2200a53b98 (diff) | |
download | plus-63f37017719d01f9ea72fb1f1e1722918a368755.tar.gz plus-63f37017719d01f9ea72fb1f1e1722918a368755.tar.bz2 plus-63f37017719d01f9ea72fb1f1e1722918a368755.tar.xz plus-63f37017719d01f9ea72fb1f1e1722918a368755.zip |
Remove from resourcemanager function for add/remove archives from directory.
Diffstat (limited to 'src/utils/virtfs.cpp')
-rw-r--r-- | src/utils/virtfs.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/utils/virtfs.cpp b/src/utils/virtfs.cpp index 0ab3b668f..e5b407f35 100644 --- a/src/utils/virtfs.cpp +++ b/src/utils/virtfs.cpp @@ -299,4 +299,50 @@ namespace VirtFs { return PHYSFS_eof(file->mPrivate->mFile); } + + void searchAndAddArchives(const std::string &restrict path, + const std::string &restrict ext, + const Append append) + { + char **list = VirtFs::enumerateFiles(path.c_str()); + + for (char **i = list; *i; i++) + { + const size_t len = strlen(*i); + + if (len > ext.length() && + !ext.compare((*i) + (len - ext.length()))) + { + const std::string file = path + (*i); + const std::string realPath = std::string( + VirtFs::getRealDir(file.c_str())); + VirtFs::addZipToSearchPath(std::string(realPath).append( + dirSeparator).append(file), append); + } + } + VirtFs::freeList(list); + } + + void searchAndRemoveArchives(const std::string &restrict path, + const std::string &restrict ext) + { + char **list = VirtFs::enumerateFiles(path.c_str()); + + for (char **i = list; *i; i++) + { + const size_t len = strlen(*i); + if (len > ext.length() && + !ext.compare((*i) + (len - ext.length()))) + { + const std::string file = path + (*i); + const std::string realPath = std::string( + VirtFs::getRealDir(file.c_str())); + VirtFs::removeZipFromSearchPath(std::string( + realPath).append( + dirSeparator).append( + file)); + } + } + VirtFs::freeList(list); + } } // namespace PhysFs |