diff options
Diffstat (limited to 'core/modules.cpp')
-rw-r--r-- | core/modules.cpp | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/core/modules.cpp b/core/modules.cpp index 4910d71..8df3288 100644 --- a/core/modules.cpp +++ b/core/modules.cpp @@ -7,17 +7,24 @@ extern PLUGINLINK pluglink; void load_modules() { std::string path = boost::filesystem::initial_path().directory_string(); //need some workaround for windows than called indirectly - path.append("/plugins"); + path.append("/plugins"); + logger.log(LM_DEBUG, "Loading plugins...\n"); boost::filesystem::path pth(path); if(!boost::filesystem::is_directory(pth)) return; - boost::filesystem::directory_iterator i(pth), end = boost::filesystem::directory_iterator(); + boost::filesystem::directory_iterator i(pth), end; while(i != end) { - if(boost::filesystem::is_directory((*i).status())) //we not look in subdirectories + if(boost::filesystem::is_directory(*i)) //we not look in subdirectories + { + ++i; continue; + } if(!boost::filesystem::status_known((*i).status())) + { + ++i; continue; + } bool is_plugin = true; plugin::exported_functions_s *funcs = new plugin::exported_functions_s; memset(&funcs,0,sizeof(plugin::exported_functions_s)); @@ -39,34 +46,34 @@ void load_modules() delete dll; continue; } - PLUGININFO *info = funcs->SetPluginInfo(); - plugins.push_back(new plugin(dll, info, funcs)); + PLUGININFO *info = funcs->SetPluginInfo(); + plugins.push_back(new plugin(dll, info, funcs)); ++i; } } void run_plugins() { //now for testing only - if(!plugins.empty()) - { - std::list<plugin*>::iterator end = plugins.end(); - for(std::list<plugin*>::iterator i = plugins.begin(); i != end; ++i) - { - (*i)->get_exported_functions()->Load(&pluglink); - (*i)->get_exported_functions()->OnModulesLoaded(); - } - } + if(!plugins.empty()) + { + std::list<plugin*>::iterator end = plugins.end(); + for(std::list<plugin*>::iterator i = plugins.begin(); i != end; ++i) + { + (*i)->get_exported_functions()->Load(&pluglink); + (*i)->get_exported_functions()->OnModulesLoaded(); + } + } } plugin::plugin(ACE_DLL *lib, PLUGININFO *info, exported_functions_s *funcs) { - if(lib) - plug = lib; - if(info) - plugininfo = info; - if(funcs) - exported_funcs = funcs; + if(lib) + plug = lib; + if(info) + plugininfo = info; + if(funcs) + exported_funcs = funcs; } const plugin::exported_functions_s* plugin::get_exported_functions() { - return exported_funcs; + return exported_funcs; } |