X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules.cpp;h=d3de60f6a850d6399b1b0859c1f40df76cb673c4;hb=e078fae142238765f279b50c309f22a5a0761ce4;hp=617d5a0fa64de280d5cdb6065e66312a9112c1c1;hpb=98659aa0dcac7636627846555ef7d5f807152b7e;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules.cpp b/src/modules.cpp index 617d5a0fa..d3de60f6a 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -111,7 +111,7 @@ void Module::OnUserQuit(User*, const std::string&, const std::string&) { } void Module::OnUserDisconnect(User*) { } void Module::OnUserJoin(User*, Channel*, bool, bool&) { } void Module::OnPostJoin(User*, Channel*) { } -void Module::OnUserPart(User*, Channel*, const std::string&, bool&) { } +void Module::OnUserPart(User*, Channel*, std::string&, bool&) { } void Module::OnRehash(User*, const std::string&) { } void Module::OnServerRaw(std::string&, bool, User*) { } int Module::OnUserPreJoin(User*, Channel*, const char*, std::string&, const std::string&) { return 0; } @@ -132,8 +132,8 @@ int Module::OnKill(User*, User*, const std::string&) { return 0; } void Module::OnLoadModule(Module*, const std::string&) { } void Module::OnUnloadModule(Module*, const std::string&) { } void Module::OnBackgroundTimer(time_t) { } -int Module::OnPreCommand(const std::string&, const char* const*, int, User *, bool, const std::string&) { return 0; } -void Module::OnPostCommand(const std::string&, const char* const*, int, User *, CmdResult, const std::string&) { } +int Module::OnPreCommand(std::string&, std::vector&, User *, bool, const std::string&) { return 0; } +void Module::OnPostCommand(const std::string&, const std::vector&, User *, CmdResult, const std::string&) { } bool Module::OnCheckReady(User*) { return true; } int Module::OnUserRegister(User*) { return 0; } int Module::OnUserPreKick(User*, User*, Channel*, const std::string&) { return 0; } @@ -143,6 +143,7 @@ int Module::OnCheckInvite(User*, Channel*) { return 0; } int Module::OnCheckKey(User*, Channel*, const std::string&) { return 0; } int Module::OnCheckLimit(User*, Channel*) { return 0; } int Module::OnCheckBan(User*, Channel*) { return 0; } +int Module::OnCheckExtBan(User *, Channel *, char) { return 0; } int Module::OnStats(char, User*, string_list&) { return 0; } int Module::OnChangeLocalUserHost(User*, const std::string&) { return 0; } int Module::OnChangeLocalUserGECOS(User*, const std::string&) { return 0; } @@ -332,7 +333,21 @@ bool ModuleManager::SetPriority(Module* mod, Implementation i, PriorityState s, /* Do we need to swap? */ if (swap && (swap_pos != source)) - std::swap(EventHandlers[i][swap_pos], EventHandlers[i][source]); + { + /* Suggestion from Phoenix, "shuffle" the modules to better retain call order */ + int incrmnt = 1; + + if (source > swap_pos) + incrmnt = -1; + + for (unsigned int j = source; j != swap_pos; j += incrmnt) + { + if (( j + incrmnt > EventHandlers[i].size() - 1) || (j + incrmnt < 0)) + continue; + + std::swap(EventHandlers[i][j], EventHandlers[i][j+incrmnt]); + } + } return true; } @@ -715,12 +730,12 @@ Channel* InspIRCd::GetChannelIndex(long index) bool InspIRCd::MatchText(const std::string &sliteral, const std::string &spattern) { - return match(sliteral.c_str(),spattern.c_str()); + return match(sliteral, spattern); } -CmdResult InspIRCd::CallCommandHandler(const std::string &commandname, const char* const* parameters, int pcnt, User* user) +CmdResult InspIRCd::CallCommandHandler(const std::string &commandname, const std::vector& parameters, User* user) { - return this->Parser->CallHandler(commandname,parameters,pcnt,user); + return this->Parser->CallHandler(commandname, parameters, user); } bool InspIRCd::IsValidModuleCommand(const std::string &commandname, int pcnt, User* user) @@ -737,9 +752,9 @@ void InspIRCd::AddCommand(Command *f) } } -void InspIRCd::SendMode(const char* const* parameters, int pcnt, User *user) +void InspIRCd::SendMode(const std::vector& parameters, User *user) { - this->Modes->Process(parameters,pcnt,user,true); + this->Modes->Process(parameters, user, true); } void InspIRCd::DumpText(User* User, const std::string &LinePrefix, std::stringstream &TextStream)