#include "inspircd.h"
#include <stdarg.h>
-#include "configreader.h"
-#include "users.h"
-#include "modules.h"
#include "wildcard.h"
#include "mode.h"
void chanrec::SetDefaultModes()
{
irc::spacesepstream list(ServerInstance->Config->DefaultModes);
- std::string modeseq = list.GetToken();
+ std::string modeseq;
std::string parameter;
- userrec* dummyuser = new userrec(ServerInstance);
- dummyuser->SetFd(FD_MAGIC_NUMBER);
+
+ list.GetToken(modeseq);
for (std::string::iterator n = modeseq.begin(); n != modeseq.end(); ++n)
{
if (mode)
{
if (mode->GetNumParams(true))
- parameter = list.GetToken().c_str();
+ list.GetToken(parameter);
else
parameter.clear();
- mode->OnModeChange(dummyuser, dummyuser, this, parameter, true);
+ mode->OnModeChange(ServerInstance->FakeClient, ServerInstance->FakeClient, this, parameter, true);
}
}
-
- delete dummyuser;
}
/*
chanrec* chanrec::ForceChan(InspIRCd* Instance, chanrec* Ptr, userrec* user, const std::string &privs)
{
- userrec* dummyuser = new userrec(Instance);
std::string nick = user->nick;
bool silent = false;
- dummyuser->SetFd(FD_MAGIC_NUMBER);
Ptr->AddUser(user);
/* Just in case they have no permissions */
{
Ptr->SetPrefix(user, status, mh->GetPrefixRank(), true);
/* Make sure that the mode handler knows this mode was now set */
- mh->OnModeChange(dummyuser, dummyuser, Ptr, nick, true);
+ mh->OnModeChange(Instance->FakeClient, Instance->FakeClient, Ptr, nick, true);
switch (mh->GetPrefix())
{
}
}
- delete dummyuser;
-
FOREACH_MOD_I(Instance,I_OnUserJoin,OnUserJoin(user, Ptr, silent));
if (!silent)
if (MOD_RESULT == 1)
return;
- dlen = curlen = snprintf(list,MAXBUF,"353 %s = %s :", user->nick, this->name);
+ dlen = curlen = snprintf(list,MAXBUF,"353 %s %c %s :", user->nick, this->IsModeSet('s') ? '@' : this->IsModeSet('p') ? '*' : '=', this->name);
int numusers = 0;
char* ptr = list + dlen;
user->WriteServ(std::string(list));
/* reset our lengths */
- dlen = curlen = snprintf(list,MAXBUF,"353 %s = %s :", user->nick, this->name);
+ dlen = curlen = snprintf(list,MAXBUF,"353 %s %c %s :", user->nick, this->IsModeSet('s') ? '@' : this->IsModeSet('p') ? '*' : '=', this->name);
ptr = list + dlen;
ptrlen = 0;