diff --git a/core/sm_trie.cpp b/core/sm_trie.cpp index ed40182b..3f732a92 100644 --- a/core/sm_trie.cpp +++ b/core/sm_trie.cpp @@ -115,8 +115,7 @@ struct Trie inline unsigned char charval(char c) { - unsigned char _c = (unsigned char)c; - return _c - 'A' + 2; + return (unsigned char)c; } unsigned int x_check(Trie *trie, char c) diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp index 405fb5d7..3962ee84 100644 --- a/core/systems/PluginSys.cpp +++ b/core/systems/PluginSys.cpp @@ -1,5 +1,6 @@ #include #include "PluginSys.h" +#include "LibrarySys.h" CPluginManager g_PluginMngr; @@ -247,6 +248,7 @@ bool CPlugin::SetPauseState(bool paused) /******************* * PLUGIN ITERATOR * *******************/ + CPluginManager::CPluginIterator::CPluginIterator(List *_mylist) { mylist = _mylist; @@ -285,6 +287,21 @@ void CPluginManager::CPluginIterator::Reset() * PLUGIN MANAGER * ******************/ +void CPluginManager::RefreshOrLoadPlugins(const char *basedir) +{ + IDirectory *dir = g_LibSys.OpenDirectory(basedir); + while (dir->MoreFiles()) + { + if (dir->IsEntryDirectory() && (strcmp(dir->GetEntryName(), "disabled") != 0)) + { + char path[PLATFORM_MAX_PATH+1]; + g_SMAPI->PathFormat(path, sizeof(path)-1, "%s/%s", basedir, dir->GetEntryName()); + RefreshOrLoadPlugins(basedir); + } + } + g_LibSys.CloseDirectory(dir); +} + IPlugin *CPluginManager::LoadPlugin(const char *path, bool debug, PluginType type, char error[], size_t err_max) { CPlugin *pPlugin = CPlugin::CreatePlugin(path, debug, type, error, err_max); diff --git a/core/systems/PluginSys.h b/core/systems/PluginSys.h index e8ce8108..51dd8fd8 100644 --- a/core/systems/PluginSys.h +++ b/core/systems/PluginSys.h @@ -95,6 +95,8 @@ public: virtual IPluginIterator *GetPluginIterator(); virtual void AddPluginsListener(IPluginsListener *listener); virtual void RemovePluginsListener(IPluginsListener *listener); +public: + virtual void RefreshOrLoadPlugins(const char *basedir); protected: void ReleaseIterator(CPluginIterator *iter); CFunction *GetFunctionFromPool(funcid_t f, CPlugin *plugin);