mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-12 09:50:29 +00:00
- MODE returns the key and user limit for channel members correctly now.
This commit is contained in:
parent
aca6310dac
commit
df00b38a0b
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-mode.c,v 1.28 2003/01/02 17:57:09 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-mode.c,v 1.29 2003/01/08 23:00:12 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -247,7 +247,34 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel )
|
|||||||
LONG l;
|
LONG l;
|
||||||
|
|
||||||
/* Mode request: let's answer it :-) */
|
/* Mode request: let's answer it :-) */
|
||||||
if( Req->argc == 1 ) return IRC_WriteStrClient( Origin, RPL_CHANNELMODEIS_MSG, Client_ID( Origin ), Channel_Name( Channel ), Channel_Modes( Channel ));
|
if( Req->argc == 1 )
|
||||||
|
{
|
||||||
|
/* Member or not? -- That's the question! */
|
||||||
|
if( ! Channel_IsMemberOf( Channel, Origin )) return IRC_WriteStrClient( Origin, RPL_CHANNELMODEIS_MSG, Client_ID( Origin ), Channel_Name( Channel ), Channel_Modes( Channel ));
|
||||||
|
|
||||||
|
/* The sender is a member: generate extended reply */
|
||||||
|
strlcpy( the_modes, Channel_Modes( Channel ), sizeof( the_modes ));
|
||||||
|
mode_ptr = the_modes;
|
||||||
|
strcpy( the_args, "" );
|
||||||
|
while( *mode_ptr )
|
||||||
|
{
|
||||||
|
switch( *mode_ptr )
|
||||||
|
{
|
||||||
|
case 'l':
|
||||||
|
snprintf( argadd, sizeof( argadd ), " %ld", Channel_MaxUsers( Channel ));
|
||||||
|
strlcat( the_args, argadd, sizeof( the_args ));
|
||||||
|
break;
|
||||||
|
case 'k':
|
||||||
|
strlcat( the_args, " ", sizeof( the_args ));
|
||||||
|
strlcat( the_args, Channel_Key( Channel ), sizeof( the_args ));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mode_ptr++;
|
||||||
|
}
|
||||||
|
if( the_args[0] ) strlcat( the_modes, the_args, sizeof( the_modes ));
|
||||||
|
|
||||||
|
return IRC_WriteStrClient( Origin, RPL_CHANNELMODEIS_MSG, Client_ID( Origin ), Channel_Name( Channel ), the_modes );
|
||||||
|
}
|
||||||
|
|
||||||
/* Is the user allowed to change modes? */
|
/* Is the user allowed to change modes? */
|
||||||
if( Client_Type( Client ) == CLIENT_USER )
|
if( Client_Type( Client ) == CLIENT_USER )
|
||||||
|
Loading…
Reference in New Issue
Block a user