commit - b36fc3b095b2038e6339a8d1fd103e09916783c7
commit + 6b0c094809e5c1972e41ee7554eb2475ccc4e2d2
blob - 675164d652600d811e55a0876d42c7b317f1316d
blob + d1b82802a6743639bdef0994d8d6f0f464f04324
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
#include "portab.h"
-static char UNUSED id[] = "$Id: irc-mode.c,v 1.52 2008/02/24 18:44:41 fw Exp $";
-
#include "imp.h"
#include <assert.h>
#include <stdio.h>
static bool Client_Mode PARAMS(( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target ));
static bool Channel_Mode PARAMS(( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel ));
-static bool Add_Ban_Invite PARAMS((int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, char *Pattern ));
-
-static bool Del_Invite PARAMS(( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, char *Pattern ));
-static bool Del_Ban PARAMS(( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, char *Pattern ));
+static bool Add_Ban_Invite PARAMS((int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const char *Pattern));
+static bool Del_Ban_Invite PARAMS((int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const char *Pattern));
static bool Send_ListChange PARAMS(( char *Mode, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const char *Mask ));
if( modeok )
{
if( set ) Add_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg] );
- else Del_Invite( Origin, Client, Channel, Req->argv[arg_arg] );
+ else Del_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg] );
}
else ok = IRC_WriteStrClient( Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID( Origin ), Channel_Name( Channel ));
Req->argv[arg_arg][0] = '\0';
/* modify list */
if( modeok )
{
- if( set ) Add_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg] );
- else Del_Ban( Origin, Client, Channel, Req->argv[arg_arg] );
+ if( set ) Add_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg]);
+ else Del_Ban_Invite(*mode_ptr, Origin, Client, Channel, Req->argv[arg_arg]);
}
else ok = IRC_WriteStrClient( Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID( Origin ), Channel_Name( Channel ));
Req->argv[arg_arg][0] = '\0';
static bool
-Add_Ban_Invite(int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, char *Pattern )
+Add_Ban_Invite(int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const char *Pattern)
{
const char *mask;
bool already;
static bool
-Del_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, char *Pattern )
+Del_Ban_Invite(int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const char *Pattern)
{
- char *mask;
+ const char *mask;
+ struct list_head *list;
assert( Client != NULL );
assert( Channel != NULL );
assert( Pattern != NULL );
+ assert(what == 'I' || what == 'b');
mask = Lists_MakeMask( Pattern );
- Lists_Del(Channel_GetListInvites(Channel), mask);
- return Send_ListChange( "-I", Prefix, Client, Channel, mask );
-} /* Del_Invite */
+ if (what == 'I')
+ list = Channel_GetListInvites(Channel);
+ else
+ list = Channel_GetListBans(Channel);
-static bool
-Del_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, char *Pattern )
-{
- char *mask;
-
- assert( Client != NULL );
- assert( Channel != NULL );
- assert( Pattern != NULL );
-
- mask = Lists_MakeMask( Pattern );
- Lists_Del(Channel_GetListBans(Channel), mask);
+ Lists_Del(list, mask);
+ if (what == 'I')
+ return Send_ListChange( "-I", Prefix, Client, Channel, mask );
return Send_ListChange( "-b", Prefix, Client, Channel, mask );
-} /* Del_Ban */
+}
static bool