summaryrefslogtreecommitdiff
path: root/src/send.c
diff options
context:
space:
mode:
authordane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-08-26 14:26:06 +0000
committerdane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-08-26 14:26:06 +0000
commit5c3ee8a19acbdc26f191386776207fb7fefb4930 (patch)
tree6c577835b47bcd7a5f7db1f9d7f1fe33b319770d /src/send.c
parentb05797bb10efec25579bda27ff4338f0b7803ac2 (diff)
BUILD : 1.7.5 (335) BUGS : 142, 152, 154, 155, 156, 157, 158 NOTES : Applied bugfix bundle patch from Trystan.
git-svn-id: svn://svn.anope.org/anope/trunk@335 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@211 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/send.c')
-rw-r--r--src/send.c111
1 files changed, 77 insertions, 34 deletions
diff --git a/src/send.c b/src/send.c
index ec7bc66ee..c90f45b24 100644
--- a/src/send.c
+++ b/src/send.c
@@ -23,24 +23,34 @@ void send_cmd(const char *source, const char *fmt, ...)
{
va_list args;
- va_start(args, fmt);
- vsend_cmd(source, fmt, args);
- va_end(args);
+ if (fmt) {
+ va_start(args, fmt);
+ vsend_cmd(source, fmt, args);
+ va_end(args);
+ }
}
void vsend_cmd(const char *source, const char *fmt, va_list args)
{
char buf[BUFSIZE];
+ *buf = '\0';
- vsnprintf(buf, sizeof(buf), fmt, args);
- if (source) {
- sockprintf(servsock, ":%s %s\r\n", source, buf);
- if (debug)
- alog("debug: Sent: :%s %s", source, buf);
- } else {
- sockprintf(servsock, "%s\r\n", buf);
- if (debug)
- alog("debug: Sent: %s", buf);
+ if (fmt) {
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+
+ if (!buf) {
+ return;
+ }
+
+ if (source) {
+ sockprintf(servsock, ":%s %s\r\n", source, buf);
+ if (debug)
+ alog("debug: Sent: :%s %s", source, buf);
+ } else {
+ sockprintf(servsock, "%s\r\n", buf);
+ if (debug)
+ alog("debug: Sent: %s", buf);
+ }
}
}
@@ -50,14 +60,22 @@ void notice_server(char *source, Server * s, char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
+ *buf = '\0';
- va_start(args, fmt);
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
- vsnprintf(buf, sizeof(buf), fmt, args);
- if (UsePrivmsg) {
- anope_cmd_serv_privmsg(source, s->name, buf);
- } else {
- anope_cmd_serv_notice(source, s->name, buf);
+ if (!buf) {
+ return;
+ }
+
+ if (UsePrivmsg) {
+ anope_cmd_serv_privmsg(source, s->name, buf);
+ } else {
+ anope_cmd_serv_notice(source, s->name, buf);
+ }
+ va_end(args);
}
}
@@ -67,14 +85,22 @@ void notice_user(char *source, User * u, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
+ *buf = '\0';
- va_start(args, fmt);
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
- vsnprintf(buf, sizeof(buf), fmt, args);
- if (UsePrivmsg && (!u->na || (u->na->nc->flags & NI_MSG))) {
- anope_cmd_privmsg2(source, u->nick, buf);
- } else {
- anope_cmd_notice2(source, u->nick, buf);
+ if (!buf) {
+ return;
+ }
+
+ if (UsePrivmsg && (!u->na || (u->na->nc->flags & NI_MSG))) {
+ anope_cmd_privmsg2(source, u->nick, buf);
+ } else {
+ anope_cmd_notice2(source, u->nick, buf);
+ }
+ va_end(args);
}
}
@@ -105,7 +131,7 @@ void notice_lang(char *source, User * dest, int message, ...)
char buf[4096]; /* because messages can be really big */
char *s, *t;
const char *fmt;
- if (!dest)
+ if (!dest || !message)
return;
va_start(args, message);
fmt = getstring(dest->na, message);
@@ -125,6 +151,7 @@ void notice_lang(char *source, User * dest, int message, ...)
anope_cmd_notice2(source, dest->nick, *t ? t : " ");
}
}
+ va_end(args);
}
/*************************************************************************/
@@ -140,7 +167,7 @@ void notice_help(char *source, User * dest, int message, ...)
char *s, *t;
const char *fmt;
- if (!dest)
+ if (!dest || !message)
return;
va_start(args, message);
fmt = getstring(dest->na, message);
@@ -166,6 +193,7 @@ void notice_help(char *source, User * dest, int message, ...)
anope_cmd_notice2(source, dest->nick, *outbuf ? outbuf : " ");
}
}
+ va_end(args);
}
/*************************************************************************/
@@ -175,14 +203,22 @@ void notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
+ *buf = '\0';
- va_start(args, fmt);
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
- vsnprintf(buf, sizeof(buf), fmt, args);
- if (UsePrivmsg) {
- anope_cmd_privmsg2(source, dest, buf);
- } else {
- anope_cmd_notice2(source, dest, buf);
+ if (!buf) {
+ return;
+ }
+
+ if (UsePrivmsg) {
+ anope_cmd_privmsg2(source, dest, buf);
+ } else {
+ anope_cmd_notice2(source, dest, buf);
+ }
+ va_end(args);
}
}
@@ -193,9 +229,16 @@ void privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
+ *buf = '\0';
- va_start(args, fmt);
+ if (fmt) {
+ va_start(args, fmt);
+ vsnprintf(buf, BUFSIZE - 1, fmt, args);
+ va_end(args);
+ }
- vsnprintf(buf, sizeof(buf), fmt, args);
+ if (!buf) {
+ return;
+ }
anope_cmd_privmsg2(source, dest, buf);
}