diff options
-rw-r--r-- | modules/commands/cs_set_misc.cpp | 29 | ||||
-rw-r--r-- | modules/commands/ns_set_misc.cpp | 26 |
2 files changed, 36 insertions, 19 deletions
diff --git a/modules/commands/cs_set_misc.cpp b/modules/commands/cs_set_misc.cpp index 0757e965b..e438210e3 100644 --- a/modules/commands/cs_set_misc.cpp +++ b/modules/commands/cs_set_misc.cpp @@ -12,13 +12,13 @@ #include "module.h" -struct MiscData : Anope::string, ExtensibleItem, Serializable<MiscData> +struct CSMiscData : Anope::string, ExtensibleItem, Serializable<CSMiscData> { ChannelInfo *ci; Anope::string name; Anope::string data; - MiscData(ChannelInfo *c, const Anope::string &n, const Anope::string &d) : ci(c), name(n), data(d) + CSMiscData(ChannelInfo *c, const Anope::string &n, const Anope::string &d) : ci(c), name(n), data(d) { } @@ -39,14 +39,22 @@ struct MiscData : Anope::string, ExtensibleItem, Serializable<MiscData> if (ci == NULL) return; - ci->Extend(data["name"].astr(), new MiscData(ci, data["name"].astr(), data["data"].astr())); + ci->Extend(data["name"].astr(), new CSMiscData(ci, data["name"].astr(), data["data"].astr())); } }; +static Anope::string GetAttribute(const Anope::string &command) +{ + size_t sp = command.rfind(' '); + if (sp != Anope::string::npos) + return command.substr(sp + 1); + return command; +} + class CommandCSSetMisc : public Command { public: - CommandCSSetMisc(Module *creator, const Anope::string &cname = "chanserv/set/misc") : Command(creator, cname, 1, 1) + CommandCSSetMisc(Module *creator, const Anope::string &cname = "chanserv/set/misc") : Command(creator, cname, 1, 2) { this->SetSyntax(_("\037channel\037 [\037parameters\037]")); } @@ -65,15 +73,16 @@ class CommandCSSetMisc : public Command return; } - Anope::string key = "cs_set_misc:" + source.command.replace_all_cs(" ", "_"); + Anope::string scommand = GetAttribute(source.command); + Anope::string key = "cs_set_misc:" + scommand; ci->Shrink(key); if (params.size() > 1) { - ci->Extend(key, new MiscData(ci, key, params[1])); - source.Reply(CHAN_SETTING_CHANGED, source.command.c_str(), ci->name.c_str(), params[1].c_str()); + ci->Extend(key, new CSMiscData(ci, key, params[1])); + source.Reply(CHAN_SETTING_CHANGED, scommand.c_str(), ci->name.c_str(), params[1].c_str()); } else - source.Reply(CHAN_SETTING_UNSET, source.command.c_str(), ci->name.c_str()); + source.Reply(CHAN_SETTING_UNSET, scommand.c_str(), ci->name.c_str()); } }; @@ -99,7 +108,7 @@ class CSSetMisc : public Module Implementation i[] = { I_OnChanInfo }; ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - Serializable<MiscData>::Alloc.Register("CSMisc"); + Serializable<CSMiscData>::Alloc.Register("CSMisc"); } void OnChanInfo(CommandSource &source, ChannelInfo *ci, bool ShowHidden) @@ -112,7 +121,7 @@ class CSSetMisc : public Module if (list[i].find("cs_set_misc:") != 0) continue; - MiscData *data = ci->GetExt<MiscData *>(list[i]); + CSMiscData *data = ci->GetExt<CSMiscData *>(list[i]); if (data != NULL) source.Reply(" %s: %s", list[i].substr(12).replace_all_cs("_", " ").c_str(), data->data.c_str()); } diff --git a/modules/commands/ns_set_misc.cpp b/modules/commands/ns_set_misc.cpp index a9b93083d..adf63e9d7 100644 --- a/modules/commands/ns_set_misc.cpp +++ b/modules/commands/ns_set_misc.cpp @@ -13,13 +13,13 @@ #include "module.h" -struct MiscData : Anope::string, ExtensibleItem, Serializable<MiscData> +struct NSMiscData : Anope::string, ExtensibleItem, Serializable<NSMiscData> { NickCore *nc; Anope::string name; Anope::string data; - MiscData(NickCore *ncore, const Anope::string &n, const Anope::string &d) : nc(ncore), name(n), data(d) + NSMiscData(NickCore *ncore, const Anope::string &n, const Anope::string &d) : nc(ncore), name(n), data(d) { } @@ -40,10 +40,17 @@ struct MiscData : Anope::string, ExtensibleItem, Serializable<MiscData> if (nc == NULL) return; - nc->Extend(data["name"].astr(), new MiscData(nc, data["name"].astr(), data["data"].astr())); + nc->Extend(data["name"].astr(), new NSMiscData(nc, data["name"].astr(), data["data"].astr())); } }; +static Anope::string GetAttribute(const Anope::string &command) +{ + size_t sp = command.rfind(' '); + if (sp != Anope::string::npos) + return command.substr(sp + 1); + return command; +} class CommandNSSetMisc : public Command { @@ -63,15 +70,16 @@ class CommandNSSetMisc : public Command } NickCore *nc = na->nc; - Anope::string key = "ns_set_misc:" + source.command.replace_all_cs(" ", "_"); + Anope::string scommand = GetAttribute(source.command); + Anope::string key = "ns_set_misc:" + scommand; nc->Shrink(key); if (!param.empty()) { - nc->Extend(key, new MiscData(nc, key, param)); - source.Reply(CHAN_SETTING_CHANGED, source.command.c_str(), nc->display.c_str(), param.c_str()); + nc->Extend(key, new NSMiscData(nc, key, param)); + source.Reply(CHAN_SETTING_CHANGED, scommand.c_str(), nc->display.c_str(), param.c_str()); } else - source.Reply(CHAN_SETTING_UNSET, source.command.c_str(), nc->display.c_str()); + source.Reply(CHAN_SETTING_UNSET, scommand.c_str(), nc->display.c_str()); return; } @@ -111,7 +119,7 @@ class NSSetMisc : public Module Implementation i[] = { I_OnNickInfo }; ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - Serializable<MiscData>::Alloc.Register("NSMisc"); + Serializable<NSMiscData>::Alloc.Register("NSMisc"); } void OnNickInfo(CommandSource &source, NickAlias *na, bool ShowHidden) @@ -124,7 +132,7 @@ class NSSetMisc : public Module if (list[i].find("ns_set_misc:") != 0) continue; - MiscData *data = na->nc->GetExt<MiscData *>(list[i]); + NSMiscData *data = na->nc->GetExt<NSMiscData *>(list[i]); if (data) source.Reply(" %s: %s", list[i].substr(12).replace_all_cs("_", " ").c_str(), data->data.c_str()); } |