Commit Diff
Diff:
9a7499af8bb3c4b781492fef216c86cf7ab04134
eaaf0c3bd5ce4f48205ca928fba994d0c44e59b2
Commit:
eaaf0c3bd5ce4f48205ca928fba994d0c44e59b2
Tree:
18437ce49c408c5144fb0eb8362d20ce7fd5df82
Author:
Alexander Barton <alex@barton.de>
Committer:
Alexander Barton <alex@barton.de>
Date:
Wed Sep 30 14:00:05 2009 UTC
Message:
New function IRC_SendWallops(). Implement new global function IRC_SendWallops() that can be called by other functions to generate WALLOPS messages to users with +w mode.
blob - 868d0ad495ee09cd1222fbb6ad852d0e89e3aeb9
blob + aae071bfc33ddbea589527da3ef218d2396e9d46
--- src/ngircd/irc-oper.c
+++ src/ngircd/irc-oper.c
@@ -298,8 +298,7 @@ IRC_DISCONNECT(CLIENT * Client, REQUEST * Req)
GLOBAL bool
IRC_WALLOPS( CLIENT *Client, REQUEST *Req )
{
- CLIENT *to, *from;
- int client_type;
+ CLIENT *from;
assert( Client != NULL );
assert( Req != NULL );
@@ -307,8 +306,7 @@ IRC_WALLOPS( CLIENT *Client, REQUEST *Req )
if (Req->argc != 1)
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG, Client_ID(Client), Req->command);
- client_type = Client_Type(Client);
- switch (client_type) {
+ switch (Client_Type(Client)) {
case CLIENT_USER:
if (!Client_OperByMe(Client))
return IRC_WriteStrClient(Client, ERR_NOPRIVILEGES_MSG, Client_ID(Client));
@@ -324,25 +322,9 @@ IRC_WALLOPS( CLIENT *Client, REQUEST *Req )
if (!from)
return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG, Client_ID(Client), Req->prefix);
- for (to=Client_First(); to != NULL; to=Client_Next(to)) {
- if (Client_Conn(to) < 0) /* no local connection or WALLOPS origin */
- continue;
-
- client_type = Client_Type(to);
- switch (client_type) {
- case CLIENT_USER:
- if (Client_HasMode(to, 'w'))
- IRC_WriteStrClientPrefix(to, from, "WALLOPS :%s", Req->argv[0]);
- break;
- case CLIENT_SERVER:
- if (to != Client)
- IRC_WriteStrClientPrefix(to, from, "WALLOPS :%s", Req->argv[0]);
- break;
- }
- }
+ IRC_SendWallops(Client, from, Req->argv[0]);
return CONNECTED;
-}
+} /* IRC_WALLOPS */
-
/* -eof- */
blob - ea0f5f8a288158531e55952212197b360690102e
blob + dae78e582335fd6ab817b1d7f75da1a773706f72
--- src/ngircd/irc-write.c
+++ src/ngircd/irc-write.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2005 by Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -405,7 +405,35 @@ va_dcl
} /* IRC_WriteStrRelatedPrefix */
+/**
+ * Send WALLOPS message.
+ */
GLOBAL void
+IRC_SendWallops(CLIENT *Client, CLIENT *From, const char *Message)
+{
+ CLIENT *to;
+
+ for (to=Client_First(); to != NULL; to=Client_Next(to)) {
+ if (Client_Conn(to) == NONE) /* no local connection */
+ continue;
+
+ switch (Client_Type(to)) {
+ case CLIENT_USER:
+ if (Client_HasMode(to, 'w'))
+ IRC_WriteStrClientPrefix(to, From,
+ "WALLOPS :%s", Message);
+ break;
+ case CLIENT_SERVER:
+ if (to != Client)
+ IRC_WriteStrClientPrefix(to, From,
+ "WALLOPS :%s", Message);
+ break;
+ }
+ }
+} /* IRC_SendWallops */
+
+
+GLOBAL void
IRC_SetPenalty( CLIENT *Client, time_t Seconds )
{
CONN_ID c;
blob - 51c8f0c2b72fff27f371101d7792f4d19468fbc8
blob + 5bac0de7a9960f8351f2c3cc5101bfdd8103023a
--- src/ngircd/irc-write.h
+++ src/ngircd/irc-write.h
@@ -35,6 +35,9 @@ GLOBAL void IRC_WriteStrServersPrefixFlag_CB PARAMS((C
GLOBAL bool IRC_WriteStrRelatedPrefix PARAMS((CLIENT *Client, CLIENT *Prefix,
bool Remote, char *Format, ...));
+GLOBAL void IRC_SendWallops PARAMS((CLIENT *Client, CLIENT *From,
+ const char *Message));
+
GLOBAL void IRC_SetPenalty PARAMS((CLIENT *Client, time_t Seconds));
#endif
IRCNow