summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modules.cpp2
-rw-r--r--src/users.cpp26
2 files changed, 27 insertions, 1 deletions
diff --git a/src/modules.cpp b/src/modules.cpp
index 4bfa16eca..6a870361b 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -194,7 +194,7 @@ void Module::OnBufferFlushed(User*) { }
void Module::OnText(User*, void*, int, const std::string&, char, CUList&) { }
void Module::OnRunTestSuite() { }
void Module::OnNamesListItem(User*, User*, Channel*, std::string&, std::string&) { }
-
+int Module::OnNumeric(User*, unsigned int, const std::string&) { return 0; }
ModuleManager::ModuleManager(InspIRCd* Ins) : ModCount(0), Instance(Ins)
{
diff --git a/src/users.cpp b/src/users.cpp
index aeb985237..286f08fe6 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -1153,6 +1153,32 @@ void User::WriteServ(const char* text, ...)
}
+void User::WriteNumeric(unsigned int numeric, const char* text, ...)
+{
+ va_list argsPtr;
+ char textbuffer[MAXBUF];
+
+ va_start(argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+
+ this->WriteNumeric(numeric, std::string(textbuffer));
+}
+
+void User::WriteNumeric(unsigned int numeric, const std::string &text)
+{
+ char textbuffer[MAXBUF];
+ int MOD_RESULT = 0;
+
+ FOREACH_RESULT(I_OnNumeric, OnNumeric(this, numeric, text));
+
+ if (MOD_RESULT)
+ return;
+
+ snprintf(textbuffer,MAXBUF,":%s %u %s %s",ServerInstance->Config->ServerName, numeric, this->nick, text.c_str());
+ this->Write(std::string(textbuffer));
+}
+
void User::WriteFrom(User *user, const std::string &text)
{
char tb[MAXBUF];