- /* Delete modes which we never want to inherit */
- Channel_ModeDel( chan, 'l' );
- Channel_ModeDel( chan, 'k' );
+ if( Req->argc == 5 )
+ {
+ if( strchr( Channel_Modes( chan ), 'k' )) Channel_SetKey( chan, Req->argv[2] );
+ if( strchr( Channel_Modes( chan ), 'l' )) Channel_SetMaxUsers( chan, atol( Req->argv[3] ));
+ }
+ else
+ {
+ /* Delete modes which we never want to inherit */
+ Channel_ModeDel( chan, 'l' );
+ Channel_ModeDel( chan, 'k' );
+ }
+
+ strcpy( modes_add, "" );
+ ptr = Channel_Modes( chan );
+ while( *ptr )
+ {
+ if( *ptr == 'l' )
+ {
+ snprintf( l, sizeof( l ), " %ld", Channel_MaxUsers( chan ));
+ strlcat( modes_add, l, sizeof( modes_add ));
+ }
+ if( *ptr == 'k' )
+ {
+ strlcat( modes_add, " ", sizeof( modes_add ));
+ strlcat( modes_add, Channel_Key( chan ), sizeof( modes_add ));
+ }
+ ptr++;
+ }
+
+ /* Inform members of this channel */
+ IRC_WriteStrChannelPrefix( Client, chan, from, false, "MODE %s +%s%s", Req->argv[0], Channel_Modes( chan ), modes_add );