diff options
author | Jordi Vilalta Prat | 2008-05-02 14:30:06 +0000 |
---|---|---|
committer | Jordi Vilalta Prat | 2008-05-02 14:30:06 +0000 |
commit | 3f44977885d33ea694df399a83cf198dd85b5fed (patch) | |
tree | c081843c9cd64d3e077482fbc7f43bbf3b39d087 /base/plugins.cpp | |
parent | 6a98108eac1203eaf1058fa24ad9c80fc9ba45a8 (diff) | |
download | scummvm-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.cpp | 59 |
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 |