summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/extern.h4
-rw-r--r--src/send.c30
2 files changed, 32 insertions, 2 deletions
diff --git a/include/extern.h b/include/extern.h
index e5b4e25d4..9fd206177 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -933,8 +933,8 @@ E void process(void);
/**** send.c ****/
-E void send_cmd(const char *source, const char *fmt, ...)
- FORMAT(printf,2,3);
+E void send_cmd(const char *source, const char *fmt, ...) FORMAT(printf,2,3);
+E void send_cmd(const std::string &source, const char *fmt, ...) FORMAT(printf,2,3);
E void notice_server(char *source, Server * s, char *fmt, ...)
FORMAT(printf,3,4);
diff --git a/src/send.c b/src/send.c
index 79e8f5e68..d99b08dab 100644
--- a/src/send.c
+++ b/src/send.c
@@ -51,6 +51,36 @@ void send_cmd(const char *source, const char *fmt, ...)
va_end(args);
}
+
+/*
+ * Copypasta version that accepts std::string source.
+void send_cmd(const std::string &source, const char *fmt, ...)
+{
+ va_list args;
+ static char buf[BUFSIZE];
+
+ va_start(args, fmt);
+
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+
+ if (!source.empty())
+ {
+ sockprintf(servsock, ":%s %s\r\n", source.c_str(), buf);
+ eventprintf(":%s %s", source, buf);
+ if (debug)
+ alog("debug: Sent: :%s %s", source.c_str(), buf);
+ }
+ else
+ {
+ sockprintf(servsock, "%s\r\n", buf);
+ eventprintf("%s", buf);
+ if (debug)
+ alog("debug: Sent: %s", buf);
+ }
+
+ va_end(args);
+}
+
/*************************************************************************/
/**