commit 6b0c094809e5c1972e41ee7554eb2475ccc4e2d2 from: Florian Westphal date: Sat Apr 19 12:12:06 2008 UTC Channel_Mode: Unify Del_Invite and Del_Ban handler commit - b36fc3b095b2038e6339a8d1fd103e09916783c7 commit + 6b0c094809e5c1972e41ee7554eb2475ccc4e2d2 blob - 675164d652600d811e55a0876d42c7b317f1316d blob + d1b82802a6743639bdef0994d8d6f0f464f04324 --- src/ngircd/irc-mode.c +++ src/ngircd/irc-mode.c @@ -14,8 +14,6 @@ #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 #include @@ -41,10 +39,8 @@ static char UNUSED id[] = "$Id: irc-mode.c,v 1.52 2008 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 )); @@ -493,7 +489,7 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Or 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'; @@ -508,8 +504,8 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Or /* 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'; @@ -648,7 +644,7 @@ IRC_AWAY( CLIENT *Client, REQUEST *Req ) 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; @@ -680,33 +676,28 @@ Add_Ban_Invite(int what, CLIENT *Prefix, CLIENT *Clien 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