diff options
| author | 2020-12-05 03:15:44 +0000 | |
|---|---|---|
| committer | 2020-12-05 03:15:44 +0000 | |
| commit | 44ffefb3561bb5a48369685a50d1ff1c23503eb2 (patch) | |
| tree | e7399d6d3913ef1dddfe04451082fc4342fe3e16 /src/modules/m_spanningtree/capab.cpp | |
| parent | Match CAPAB subcommands using the IRC casemapping. (diff) | |
Omit module prefixes/suffixes when linking using the 1206 protocol.
Diffstat (limited to 'src/modules/m_spanningtree/capab.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/capab.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/modules/m_spanningtree/capab.cpp b/src/modules/m_spanningtree/capab.cpp index 57317225a..92589c84c 100644 --- a/src/modules/m_spanningtree/capab.cpp +++ b/src/modules/m_spanningtree/capab.cpp @@ -44,12 +44,21 @@ std::string TreeSocket::MyModules(int filter) if ((!(mod->properties & filter))) continue; - if (i != modlist.begin()) + if (!capabilities.empty()) capabilities.push_back(' '); - std::string modname = i->first; - modname.replace(modname.end() - strlen(DLL_EXTENSION) - 1, modname.end(), ".so"); - capabilities.append(modname); + size_t endpos = i->first.length() - strlen(DLL_EXTENSION); + if (proto_version <= PROTO_INSPIRCD_30) + { + // Replace m_foo.dylib with m_foo.so + capabilities.append(i->first.substr(0, endpos)).append(".so"); + } + else + { + // Replace m_foo.dylib with foo + size_t startpos = i->first.compare(0, 2, "m_", 2) ? 0 : 2; + capabilities.append(i->first.substr(startpos, endpos - startpos)); + } std::string link_data; mod->GetLinkData(link_data); |
