--- smsdaemon/PluginManager.cpp 2008/06/09 20:56:03 28 +++ smsdaemon/PluginManager.cpp 2008/06/10 14:38:59 35 @@ -5,6 +5,8 @@ #include "EchoPlugin.h" #include "SpamPlugin.h" +#include "ShellExecPlugin.h" + typedef std::map::iterator MapIterator; @@ -19,25 +21,39 @@ void PluginManager::AddPlugin(Plugin* plugin) { - _plugins[ plugin->GetCommand() ] = plugin; + Common* cmn = Common::instance(); + + if (plugin != 0) + { + std::string command = plugin->GetCommand(); + + if ( _plugins[ command ] == 0) + _plugins[ command ] = plugin; + else + cmn->logMessage( std::string("AddPlugin() -- already have a plugin called ") + command); + } + else + { + cmn->logMessage("AddPlugin() -- cannot register a null pointer"); + } } void PluginManager::LoadPlugins() { Common* cmn = Common::instance(); - static EchoPlugin echo; - _plugins[ echo.GetCommand() ] = &echo; static SpamPlugin spam; - _plugins[ spam.GetCommand() ] = &spam; - + + static ShellExecPlugin wake("wake", "/home/torben/bin/wake"); + for(MapIterator it = _plugins.begin(); it != _plugins.end(); ++it) { Plugin* pl = (*it).second; - cmn->logMessage( std::string("Loaded plugin \"") + pl->GetCommand() + "\" - " + pl->GetDescription() ); + if (pl != 0) + cmn->logMessage( std::string("Loaded plugin \"") + pl->GetCommand() + "\" - " + pl->GetDescription() ); } }