mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	- MODE returns the key and user limit for channel members correctly now. [Head]
This commit is contained in:
		| @@ -14,7 +14,7 @@ | |||||||
|  |  | ||||||
| #include "portab.h" | #include "portab.h" | ||||||
|  |  | ||||||
| static char UNUSED id[] = "$Id: irc-mode.c,v 1.24.2.1 2003/01/02 18:03:05 alex Exp $"; | static char UNUSED id[] = "$Id: irc-mode.c,v 1.24.2.2 2003/01/08 23:08:12 alex Exp $"; | ||||||
|  |  | ||||||
| #include "imp.h" | #include "imp.h" | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| @@ -246,7 +246,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 ) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Alexander Barton
					Alexander Barton