From 7bb75e575b5f6a555a0651057c0cb5b30f93a9d9 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 20 May 2015 15:02:24 +0200 Subject: Allow modules to be called as "foo" instead of "m_foo.so" --- src/modules.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/modules.cpp') 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::iterator modfind = Modules.find(name); + std::map::const_iterator modfind = Modules.find(ExpandModName(name)); if (modfind == Modules.end()) return NULL; -- cgit v1.3.1-10-gc9f91