Implement +I (private channel list on whois)

Implements enhancement requested in issue #179
This commit is contained in:
LucentW 2015-04-27 23:20:32 +02:00
parent c5da483685
commit 21767c968d
3 changed files with 36 additions and 33 deletions

View File

@ -177,7 +177,7 @@
#endif
/** Supported user modes. */
#define USERMODES "abBcCFioqrRswx"
#define USERMODES "abBcCFiIoqrRswx"
/** Supported channel modes. */
#define CHANMODES "abehiIklmMnoOPqQrRstvVz"

View File

@ -313,7 +313,8 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
Client_Info(Client_Introducer(c))))
return DISCONNECTED;
/* Channels */
/* Channels, show only if client has no +I or if from is oper */
if(!(Client_HasMode(c, 'I')) || Client_HasMode(from, 'o')) {
snprintf(str, sizeof(str), RPL_WHOISCHANNELS_MSG,
Client_ID(from), Client_ID(c));
cl2chan = Channel_FirstChannelOf(c);
@ -355,6 +356,7 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIENT *c)
if (!IRC_WriteStrClient(Client, "%s", str))
return DISCONNECTED;
}
}
/* IRC-Services? */
if (Client_Type(c) == CLIENT_SERVICE &&

View File

@ -206,6 +206,7 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target )
case 'b': /* Block private msgs */
case 'C': /* Only messages from clients sharing a channel */
case 'i': /* Invisible */
case 'I': /* Hide channel list from WHOIS */
case 's': /* Server messages */
case 'w': /* Wallops messages */
x[0] = *mode_ptr;