X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fhelperfuncs.cpp;h=608ed2f1bf953186ac20fa0b1ff8a250adeff138;hb=19157777c5f977fddbcfdc8cdad78e12bf0d6bbb;hp=cb5511ef24b2224a39268ba1ad21e7a3a8f4b928;hpb=099124efd7da13b0165e53a8739692f192757cce;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index cb5511ef2..608ed2f1b 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" @@ -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,24 +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::FindUUID(uid.c_str()); + return FindUUID(uid.c_str()); } userrec *InspIRCd::FindUUID(const char *uid) { - for (user_hash::const_iterator a = this->clientlist->begin(); a != this->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 NULL; + return finduuid->second; } /* find a channel record by channel name and return a pointer to it */