* IRC commands for mode changes (like MODE, AWAY, etc.)
*/
-#include "imp.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include "messages.h"
#include "conf.h"
-#include "exp.h"
#include "irc-mode.h"
static bool Client_Mode PARAMS((CLIENT *Client, REQUEST *Req, CLIENT *Origin,
Client_Modes(Target));
}
- IRC_SetPenalty(Client, 1);
return ok;
} /* Client_Mode */
goto chan_exit;
if (!set) {
if (is_oper || is_machine || is_owner ||
- is_admin || is_op || is_halfop)
+ is_admin || is_op || is_halfop) {
x[0] = *mode_ptr;
- else
+ if (Channel_HasMode(Channel, 'k'))
+ strlcpy(argadd, "*", sizeof(argadd));
+ if (arg_arg > mode_arg)
+ arg_arg++;
+ } else
connected = IRC_WriteErrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
#ifdef STRICT_RFC
/* Only send error message in "strict" mode,
* this is how ircd2.11 and others behave ... */
- IRC_SetPenalty(Origin, 2);
connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command);
#ifdef STRICT_RFC
/* Only send error message in "strict" mode,
* this is how ircd2.11 and others behave ... */
- IRC_SetPenalty(Origin, 2);
connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command);
* mode, because most other servers don't do
* it as well and some clients send "wired"
* MODE commands like "MODE #chan -ooo nick". */
- IRC_SetPenalty(Origin, 2);
connected = IRC_WriteErrClient(Origin,
ERR_NEEDMOREPARAMS_MSG,
Client_ID(Origin), Req->command);
}
}
- IRC_SetPenalty(Client, 1);
return connected;
} /* Channel_Mode */