X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fhelperfuncs.cpp;h=1cad143c510c207479f56a3ab631f9cb8d73c39f;hb=9422f4157ccff0482cd70105ada3bd9325455eaa;hp=fae9759d95b1d5f33973f1e8df8c893dfab69684;hpb=0c9434cde9c972f488abc7a2e72aacdd92f31f8b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index fae9759d9..1cad143c5 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -13,11 +13,7 @@ #include "inspircd.h" #include -#include "configreader.h" -#include "users.h" -#include "modules.h" #include "wildcard.h" -#include "mode.h" #include "xline.h" #include "exitcodes.h" @@ -118,7 +114,7 @@ void InspIRCd::WriteOpers(const char* text, ...) void InspIRCd::WriteOpers(const std::string &text) { - for (std::vector::iterator i = this->all_opers.begin(); i != this->all_opers.end(); i++) + for (std::list::iterator i = this->all_opers.begin(); i != this->all_opers.end(); i++) { userrec* a = *i; if (IS_LOCAL(a) && a->IsModeSet('s')) @@ -236,6 +232,9 @@ void InspIRCd::WriteMode(const char* modes, int flags, const char* text, ...) /* Find a user record by nickname and return a pointer to it */ userrec* InspIRCd::FindNick(const std::string &nick) { + if (!nick.empty() && isdigit(*nick.begin())) + return FindUUID(nick); + user_hash::iterator iter = clientlist->find(nick); if (iter == clientlist->end()) @@ -247,6 +246,9 @@ userrec* InspIRCd::FindNick(const std::string &nick) userrec* InspIRCd::FindNick(const char* nick) { + if (isdigit(*nick)) + return FindUUID(nick); + user_hash::iterator iter = clientlist->find(nick); if (iter == clientlist->end()) @@ -255,22 +257,39 @@ userrec* InspIRCd::FindNick(const char* nick) return iter->second; } +userrec* InspIRCd::FindNickOnly(const std::string &nick) +{ + user_hash::iterator iter = clientlist->find(nick); + + if (iter == clientlist->end()) + return NULL; + + return iter->second; +} + +userrec* InspIRCd::FindNickOnly(const char* nick) +{ + user_hash::iterator iter = clientlist->find(nick); + + if (iter == clientlist->end()) + return NULL; + + return iter->second; +} + userrec *InspIRCd::FindUUID(const std::string &uid) { - return InspIRCd::FindUID(uid.c_str()); + return FindUUID(uid.c_str()); } userrec *InspIRCd::FindUUID(const char *uid) { - for (user_hash::const_iterator a = ServerInstance->clientlist->begin(); a != ServerInstance->clientlist->end(); a++) - { - userrec *u = a->second; + user_hash::iterator finduuid = uuidlist->find(uid); - if (strcmp(u->uuid, uid) == 0 - { - return u; - } - } + if (finduuid == uuidlist->end()) + return NULL; + + return finduuid->second; } /* find a channel record by channel name and return a pointer to it */ @@ -508,29 +527,6 @@ void InspIRCd::CheckDie() } } -/* We must load the modules AFTER initializing the socket engine, now */ -void InspIRCd::LoadAllModules() -{ - char configToken[MAXBUF]; - Config->module_names.clear(); - this->ModCount = -1; - - for (int count = 0; count < Config->ConfValueEnum(Config->config_data, "module"); count++) - { - Config->ConfValue(Config->config_data, "module", "name", count, configToken, MAXBUF); - printf_c("[\033[1;32m*\033[0m] Loading module:\t\033[1;32m%s\033[0m\n",configToken); - - if (!this->LoadModule(configToken)) - { - this->Log(DEFAULT,"There was an error loading the module '%s': %s", configToken, this->ModuleError()); - printf_c("\n[\033[1;31m*\033[0m] There was an error loading the module '%s': %s\n\n", configToken, this->ModuleError()); - Exit(EXIT_STATUS_MODULE); - } - } - printf_c("\nA total of \033[1;32m%d\033[0m module%s been loaded.\n", this->ModCount+1, this->ModCount+1 == 1 ? " has" : "s have"); - this->Log(DEFAULT,"Total loaded modules: %d", this->ModCount+1); -} - void InspIRCd::SendWhoisLine(userrec* user, userrec* dest, int numeric, const std::string &text) { std::string copy_text = text; @@ -552,4 +548,3 @@ void InspIRCd::SendWhoisLine(userrec* user, userrec* dest, int numeric, const ch this->SendWhoisLine(user, dest, numeric, std::string(textbuffer)); } -