diff options
Diffstat (limited to 'backends/platform/n64/pakfs_save_manager.cpp')
-rw-r--r-- | backends/platform/n64/pakfs_save_manager.cpp | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/backends/platform/n64/pakfs_save_manager.cpp b/backends/platform/n64/pakfs_save_manager.cpp index 3fbf55a199..5499462d68 100644 --- a/backends/platform/n64/pakfs_save_manager.cpp +++ b/backends/platform/n64/pakfs_save_manager.cpp @@ -21,9 +21,8 @@ */ #include <n64utils.h> -#include "pakfs_save_manager.h" -static bool matches(const char *glob, const char *name); +#include "pakfs_save_manager.h" bool deleteSaveGame(const char *filename) { int res = removeFileOnPak(filename); @@ -56,11 +55,14 @@ Common::StringList PAKSaveManager::listSavefiles(const Common::String &pattern) PAKDIR *dirp = pakfs_opendir(); pakfs_dirent *dp; Common::StringList list; + Common::String *fname; while ((dp = pakfs_readdir(dirp)) != NULL) { - if (matches(pattern.c_str(), dp->entryname)) + fname = new Common::String(dp->entryname); + if (fname->matchString(pattern, false, false)) list.push_back(dp->entryname); + delete fname; free(dp); } @@ -69,24 +71,3 @@ Common::StringList PAKSaveManager::listSavefiles(const Common::String &pattern) return list; } -static bool matches(const char *glob, const char *name) { - while (*glob) - if (*glob == '*') { - while (*glob == '*') - glob++; - do { - if ((*name == *glob || *glob == '?') && - matches(glob, name)) - return true; - } while (*name++); - return false; - } else if (!*name) - return false; - else if (*glob == '?' || *glob == *name) { - glob++; - name++; - } else - return false; - return !*name; -} - |