summaryrefslogtreecommitdiff
path: root/src/modules.cpp
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2015-05-20 15:02:24 +0200
committerAttila Molnar <attilamolnar@hush.com>2015-05-20 15:02:24 +0200
commit7bb75e575b5f6a555a0651057c0cb5b30f93a9d9 (patch)
treec99cd7056aa20ce999c678501d6733f3ad3662c2 /src/modules.cpp
parent48817837737c4b5908bb51dc319fad8f2e58ea8f (diff)
Allow modules to be called as "foo" instead of "m_foo.so"
Diffstat (limited to 'src/modules.cpp')
-rw-r--r--src/modules.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/modules.cpp b/src/modules.cpp
index b8982579c..334ac39f8 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -636,6 +636,16 @@ ServiceProvider* ModuleManager::FindService(ServiceType type, const std::string&
}
}
+std::string ModuleManager::ExpandModName(const std::string& modname)
+{
+ // Transform "callerid" -> "m_callerid.so" unless it already has a ".so" extension,
+ // so coremods in the "core_*.so" form aren't changed
+ std::string ret = modname;
+ if ((modname.length() < 3) || (modname.compare(modname.size() - 3, 3, ".so")))
+ ret.insert(0, "m_").append(".so");
+ return ret;
+}
+
dynamic_reference_base::dynamic_reference_base(Module* Creator, const std::string& Name)
: name(Name), hook(NULL), value(NULL), creator(Creator)
{
@@ -685,7 +695,7 @@ void dynamic_reference_base::resolve()
Module* ModuleManager::Find(const std::string &name)
{
- std::map<std::string, Module*>::iterator modfind = Modules.find(name);
+ std::map<std::string, Module*>::const_iterator modfind = Modules.find(ExpandModName(name));
if (modfind == Modules.end())
return NULL;