/** Handle /AWAY
*/
-CmdResult CommandAway::Handle (const char* const* parameters, int pcnt, User *user)
+CmdResult CommandAway::Handle (const std::vector<std::string>& parameters, User *user)
{
int MOD_RESULT = 0;
- if ((pcnt) && (*parameters[0]))
+ if ((parameters.size()) && (!parameters[0].empty()))
{
FOREACH_RESULT(I_OnSetAway, OnSetAway(user, parameters[0]));
if (MOD_RESULT != 0 && !IS_LOCAL(user))
return CMD_FAILURE;
- strlcpy(user->awaymsg,parameters[0],MAXAWAY);
- user->WriteNumeric(306, "%s :You have been marked as being away",user->nick);
+ user->awaytime = ServerInstance->Time();
+ user->awaymsg.assign(parameters[0], 0, ServerInstance->Config->Limits.MaxAway);
+
+ user->WriteNumeric(RPL_NOWAWAY, "%s :You have been marked as being away",user->nick.c_str());
}
else
{
if (MOD_RESULT != 0 && !IS_LOCAL(user))
return CMD_FAILURE;
- *user->awaymsg = 0;
- user->WriteNumeric(305, "%s :You are no longer marked as being away",user->nick);
+ user->awaymsg.clear();
+ user->WriteNumeric(RPL_UNAWAY, "%s :You are no longer marked as being away",user->nick.c_str());
}
return CMD_SUCCESS;