aboutsummaryrefslogtreecommitdiff
path: root/base/plugins.cpp
diff options
context:
space:
mode:
authorJordi Vilalta Prat2008-05-02 14:30:06 +0000
committerJordi Vilalta Prat2008-05-02 14:30:06 +0000
commit3f44977885d33ea694df399a83cf198dd85b5fed (patch)
treec081843c9cd64d3e077482fbc7f43bbf3b39d087 /base/plugins.cpp
parent6a98108eac1203eaf1058fa24ad9c80fc9ba45a8 (diff)
downloadscummvm-rg350-3f44977885d33ea694df399a83cf198dd85b5fed.tar.gz
scummvm-rg350-3f44977885d33ea694df399a83cf198dd85b5fed.tar.bz2
scummvm-rg350-3f44977885d33ea694df399a83cf198dd85b5fed.zip
Added support to load plugins from different directories and the ability to specify the default directory from configure.
svn-id: r31816
Diffstat (limited to 'base/plugins.cpp')
-rw-r--r--base/plugins.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/base/plugins.cpp b/base/plugins.cpp
index 188eb10475..c62d1a00b9 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -162,6 +162,65 @@ public:
}
};
+#else
+
+PluginList FilePluginProvider::getPlugins() {
+ PluginList pl;
+
+ // Prepare the list of directories to search
+ Common::StringList pluginDirs;
+ // TODO: Add the user specified directory (via config file)
+ pluginDirs.push_back(".");
+ pluginDirs.push_back("plugins");
+
+ // Add the provider's custom directories
+ addCustomDirectories(pluginDirs);
+
+ Common::StringList::const_iterator d;
+ for (d = pluginDirs.begin(); d != pluginDirs.end(); d++) {
+ // Load all plugins.
+ // Scan for all plugins in this directory
+ FilesystemNode dir(*d);
+ FSList files;
+ if (!dir.getChildren(files, FilesystemNode::kListFilesOnly)) {
+ debug(1, "Couldn't open plugin directory '%s'", d->c_str());
+ continue;
+ } else {
+ debug(1, "Reading plugins from plugin directory '%s'", d->c_str());
+ }
+
+ for (FSList::const_iterator i = files.begin(); i != files.end(); ++i) {
+ Common::String name(i->getName());
+ if (name.hasPrefix(getPrefix()) && name.hasSuffix(getSuffix())) {
+ pl.push_back(createPlugin(i->getPath()));
+ }
+ }
+ }
+
+ return pl;
+}
+
+const char* FilePluginProvider::getPrefix() const {
+#ifdef PLUGIN_PREFIX
+ return PLUGIN_PREFIX;
+#else
+ return "";
+#endif
+}
+
+const char* FilePluginProvider::getSuffix() const {
+#ifdef PLUGIN_SUFFIX
+ return PLUGIN_SUFFIX;
+#else
+ return "";
+#endif
+}
+
+void FilePluginProvider::addCustomDirectories(Common::StringList &dirs) const {
+#ifdef PLUGIN_DIRECTORY
+ dirs.push_back(PLUGIN_DIRECTORY);
+#endif
+}
#endif