commit 7d6de7c352f7b91b396cbdb6f2d194e2422b35b3 from: Alexander Barton date: Wed Sep 30 14:00:05 2009 UTC IRC_SendWallops(): support format string and variable parameter lists. commit - 30b584c2e8632f94312dc9575fccc510a2b437c0 commit + 7d6de7c352f7b91b396cbdb6f2d194e2422b35b3 blob - 082414984df728ada9fdfae2aae7d6d5bb33c5ef blob + 544fe67d4928c8ba3dc793f38107b6f62b8a5835 --- src/ngircd/irc-oper.c +++ src/ngircd/irc-oper.c @@ -207,8 +207,6 @@ IRC_RESTART( CLIENT *Client, REQUEST *Req ) GLOBAL bool IRC_CONNECT(CLIENT * Client, REQUEST * Req) { - char msg[LINE_LEN + 64]; - assert(Client != NULL); assert(Req != NULL); @@ -225,9 +223,9 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req) return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG, Client_ID(Client), Req->command); - snprintf(msg, sizeof(msg), "Received CONNECT %s from %s", - Req->argv[0], Client_ID(Client)); - IRC_SendWallops(Client_ThisServer(), Client_ThisServer(), msg); + IRC_SendWallops(Client_ThisServer(), Client_ThisServer(), + "Received CONNECT %s from %s", + Req->argv[0], Client_ID(Client)); Log(LOG_NOTICE | LOG_snotice, "Got CONNECT command from \"%s\" for \"%s\".", Client_Mask(Client), @@ -269,7 +267,6 @@ GLOBAL bool IRC_DISCONNECT(CLIENT * Client, REQUEST * Req) { CONN_ID my_conn; - char msg[LINE_LEN + 64]; assert(Client != NULL); assert(Req != NULL); @@ -282,9 +279,9 @@ IRC_DISCONNECT(CLIENT * Client, REQUEST * Req) return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG, Client_ID(Client), Req->command); - snprintf(msg, sizeof(msg), "Received DISCONNECT %s from %s", - Req->argv[0], Client_ID(Client)); - IRC_SendWallops(Client_ThisServer(), Client_ThisServer(), msg); + IRC_SendWallops(Client_ThisServer(), Client_ThisServer(), + "Received DISCONNECT %s from %s", + Req->argv[0], Client_ID(Client)); Log(LOG_NOTICE | LOG_snotice, "Got DISCONNECT command from \"%s\" for \"%s\".", @@ -333,7 +330,7 @@ IRC_WALLOPS( CLIENT *Client, REQUEST *Req ) if (!from) return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG, Client_ID(Client), Req->prefix); - IRC_SendWallops(Client, from, Req->argv[0]); + IRC_SendWallops(Client, from, "%s", Req->argv[0]); return CONNECTED; } /* IRC_WALLOPS */ blob - dae78e582335fd6ab817b1d7f75da1a773706f72 blob + 9b5b5e2185aa2e8a9b1577e5d5b5fa2ee3359bd4 --- src/ngircd/irc-write.c +++ src/ngircd/irc-write.c @@ -408,11 +408,30 @@ va_dcl /** * Send WALLOPS message. */ +#ifdef PROTOTYPES GLOBAL void -IRC_SendWallops(CLIENT *Client, CLIENT *From, const char *Message) +IRC_SendWallops(CLIENT *Client, CLIENT *From, const char *Format, ...) +#else +GLOBAL void +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 ch 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; } } blob - 5bac0de7a9960f8351f2c3cc5101bfdd8103023a blob + a984997b3c6c3acab14ad322bf71fbdb95ab0805 --- src/ngircd/irc-write.h +++ src/ngircd/irc-write.h @@ -36,7 +36,7 @@ GLOBAL bool IRC_WriteStrRelatedPrefix PARAMS((CLIENT * bool Remote, char *Format, ...)); GLOBAL void IRC_SendWallops PARAMS((CLIENT *Client, CLIENT *From, - const char *Message)); + const char *Format, ...)); GLOBAL void IRC_SetPenalty PARAMS((CLIENT *Client, time_t Seconds));