X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_user%2Fcmd_mode.cpp;h=190983d13047b28d9f2cd6568d3d9ae933148d2b;hb=0ec19b7ac91eedc83b31c3da733e237bfe28fc48;hp=f1e857fc13b9e6eee8c36fac64d34eae1d73c262;hpb=0f15b0869703c20277c181f95ed38f2b2a5c1e04;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_user/cmd_mode.cpp b/src/coremods/core_user/cmd_mode.cpp index f1e857fc1..190983d13 100644 --- a/src/coremods/core_user/cmd_mode.cpp +++ b/src/coremods/core_user/cmd_mode.cpp @@ -143,11 +143,16 @@ void CommandMode::DisplayCurrentModes(User* user, User* targetuser, Channel* tar if (targetuser == user || user->HasPrivPermission("users/auspex")) { // Display user's current mode string - user->WriteNumeric(RPL_UMODEIS, ":+%s", targetuser->FormatModes()); + // XXX: Use WriteServ() because WriteNumeric() assumes the target (i.e. next word after the number) + // is 'user' and puts his nick there which is not what we want + user->WriteServ("%03d %s :+%s", RPL_UMODEIS, targetuser->nick.c_str(), targetuser->FormatModes()); if (targetuser->IsOper()) { ModeHandler* snomask = ServerInstance->Modes->FindMode('s', MODETYPE_USER); - user->WriteNumeric(RPL_SNOMASKIS, "%s :Server notice mask", snomask->GetUserParameter(user).c_str()); + std::string snomaskstr = snomask->GetUserParameter(user); + // snomaskstr is empty if the snomask mode isn't set, otherwise it begins with a '+'. + // In the former case output a "+", not an empty string. + user->WriteServ("%03d %s %s%s :Server notice mask", RPL_SNOMASKIS, targetuser->nick.c_str(), (snomaskstr.empty() ? "+" : ""), snomaskstr.c_str()); } } else