]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-write.c
IRC_SendWallops(): support format string and variable parameter lists.
[ngircd-alex.git] / src / ngircd / irc-write.c
index dae78e582335fd6ab817b1d7f75da1a773706f72..9b5b5e2185aa2e8a9b1577e5d5b5fa2ee3359bd4 100644 (file)
@@ -408,11 +408,30 @@ va_dcl
 /**
  * Send WALLOPS message.
  */
+#ifdef PROTOTYPES
+GLOBAL void
+IRC_SendWallops(CLIENT *Client, CLIENT *From, const char *Format, ...)
+#else
 GLOBAL void
-IRC_SendWallops(CLIENT *Client, CLIENT *From, const char *Message)
+IRC_SendWallops(Client, From, Format, va_alist )
+CLIENT *Client;
+CLIENT *From;
+char *Format;
+va_dcl
+#endif
 {
+       va_list ap;
+       char msg[1000];
        CLIENT *to;
 
+#ifdef PROTOTYPES
+       va_start(ap, Format);
+#else
+       va_start(ap);
+#endif
+       vsnprintf(msg, 1000, Format, ap);
+       va_end(ap);
+
        for (to=Client_First(); to != NULL; to=Client_Next(to)) {
                if (Client_Conn(to) == NONE) /* no local connection */
                        continue;
@@ -421,12 +440,12 @@ IRC_SendWallops(CLIENT *Client, CLIENT *From, const char *Message)
                case CLIENT_USER:
                        if (Client_HasMode(to, 'w'))
                                IRC_WriteStrClientPrefix(to, From,
-                                                        "WALLOPS :%s", Message);
+                                                        "WALLOPS :%s", msg);
                                break;
                case CLIENT_SERVER:
                        if (to != Client)
                                IRC_WriteStrClientPrefix(to, From,
-                                                        "WALLOPS :%s", Message);
+                                                        "WALLOPS :%s", msg);
                                break;
                }
        }