From e6ea9f7d4a4bf015524749da6ffeecf1d15c9268 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 27 Aug 2024 14:29:56 +0100 Subject: [PATCH] Change InspIRCd::ProcessColors to take a string instead of a vector. This is more useful for how MOTDs are processed now as we iterate through them anyway and this allows us to avoid a needless second iteration. --- include/inspircd.h | 6 ++++++ src/coremods/core_info/core_info.cpp | 2 +- src/helperfuncs.cpp | 7 ++++++- src/modules/m_opermotd.cpp | 2 +- src/modules/m_showfile.cpp | 2 +- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/inspircd.h b/include/inspircd.h index a216d9e08..ed2adb900 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -422,8 +422,14 @@ public: /** Replaces color escapes in the specified lines with IRC colors. * @param lines A vector of lines to replace color escapes in. */ + [[deprecated("Use ProcessColors(std::string) instead")]] static void ProcessColors(std::vector& lines); + /** Replaces color escapes in the specified string with IRC colors. + * @param lines The string replace color escapes in. + */ + static void ProcessColors(std::string& str); + /** Stores an incoming signal when received from the operating system. * @param signal The signal received from the operating system. */ diff --git a/src/coremods/core_info/core_info.cpp b/src/coremods/core_info/core_info.cpp index 82c42dc78..6ffe9ade6 100644 --- a/src/coremods/core_info/core_info.cpp +++ b/src/coremods/core_info/core_info.cpp @@ -153,9 +153,9 @@ public: // Some clients can not handle receiving RPL_MOTD with an empty // trailing parameter so if a line is empty we replace it with // a single space. + InspIRCd::ProcessColors(line); newmotd.push_back(line.empty() ? " " : line); } - InspIRCd::ProcessColors(newmotd); } cmdmotd.motds.swap(newmotds); diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index bd8f4a231..5ebb6e44d 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -120,6 +120,12 @@ void InspIRCd::StripColor(std::string& sentence) } void InspIRCd::ProcessColors(std::vector& input) +{ + for (auto& line : input) + ProcessColors(line); +} + +void InspIRCd::ProcessColors(std::string& ret) { /* * Replace all color codes from the special[] array to actual @@ -148,7 +154,6 @@ void InspIRCd::ProcessColors(std::vector& input) special_chars("", "") }; - for (auto& ret : input) { for(int i = 0; !special[i].character.empty(); ++i) { diff --git a/src/modules/m_opermotd.cpp b/src/modules/m_opermotd.cpp index 284043f4e..91453106a 100644 --- a/src/modules/m_opermotd.cpp +++ b/src/modules/m_opermotd.cpp @@ -118,9 +118,9 @@ private: // Some clients can not handle receiving RPL_OMOTD with an empty // trailing parameter so if a line is empty we replace it with // a single space. + InspIRCd::ProcessColors(line); newmotd.push_back(line.empty() ? " " : line); } - InspIRCd::ProcessColors(newmotd); } public: diff --git a/src/modules/m_showfile.cpp b/src/modules/m_showfile.cpp index 82cb7abe0..38d164547 100644 --- a/src/modules/m_showfile.cpp +++ b/src/modules/m_showfile.cpp @@ -103,9 +103,9 @@ public: // Some clients can not handle receiving NOTICE/PRIVMSG/RPL_RULES // with an empty trailing parameter so if a line is empty we // replace it with a single space. + InspIRCd::ProcessColors(line); contents.push_back(line.empty() ? " " : line); } - InspIRCd::ProcessColors(contents); contents.shrink_to_fit(); } };