summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2007-08-27 01:01:20 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2007-08-27 01:01:20 +0000
commit0c9434cde9c972f488abc7a2e72aacdd92f31f8b (patch)
tree0bca59af1b6822e3614ca403ef1bcc3e46b0c858
parent7936e1b8ba27a3275868362fa41ecf1d805a1a1b (diff)
Add InspIRCd::FindUUID() methods. Currently, these work off an iteration around the whole client list. This sucks, and will be changed to a map the same as FindNick(). Also update FindNick's docs a little out of anal habit: it returns a user, not a nick. :)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7855 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/inspircd.h16
-rw-r--r--src/helperfuncs.cpp18
2 files changed, 32 insertions, 2 deletions
diff --git a/include/inspircd.h b/include/inspircd.h
index 06fdd7124..99b709518 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -399,6 +399,18 @@ class CoreExport InspIRCd : public classbase
*/
std::string GetUID();
+ /** Find a user in the UUID hash
+ * @param nick The nickname to find
+ * @return A pointer to the user, or NULL if the user does not exist
+ */
+ userrec *FindUUID(const std::string &);
+
+ /** Find a user in the UUID hash
+ * @param nick The nickname to find
+ * @return A pointer to the user, or NULL if the user does not exist
+ */
+ userrec *FindUUID(const char *);
+
/** Build the ISUPPORT string by triggering all modules On005Numeric events
*/
void BuildISupport();
@@ -608,13 +620,13 @@ class CoreExport InspIRCd : public classbase
*/
void WriteOpers(const std::string &text);
- /** Find a nickname in the nick hash
+ /** Find a user in the nick hash
* @param nick The nickname to find
* @return A pointer to the user, or NULL if the user does not exist
*/
userrec* FindNick(const std::string &nick);
- /** Find a nickname in the nick hash
+ /** Find a user in the nick hash
* @param nick The nickname to find
* @return A pointer to the user, or NULL if the user does not exist
*/
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 9363e3376..fae9759d9 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -255,6 +255,24 @@ userrec* InspIRCd::FindNick(const char* nick)
return iter->second;
}
+userrec *InspIRCd::FindUUID(const std::string &uid)
+{
+ return InspIRCd::FindUID(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;
+
+ if (strcmp(u->uuid, uid) == 0
+ {
+ return u;
+ }
+ }
+}
+
/* find a channel record by channel name and return a pointer to it */
chanrec* InspIRCd::FindChan(const char* chan)
{