added cmd_staff
[NeonServV5.git] / src / UserNode.c
index 72636797703fa7fb99da9ea38f78672b5896b527..e4d73cac70bc8e33817c34f3657053aa61c209bf 100644 (file)
@@ -1,4 +1,4 @@
-/* UserNode.c - NeonServ v5.0
+/* UserNode.c - NeonServ v5.2
  * Copyright (C) 2011  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -159,6 +159,20 @@ struct UserNode* getAllUsers(struct UserNode *last) {
         return last->next;
 }
 
+struct UserNode* getUsersWithAuth(const char *auth, struct UserNode *last) {
+    int cindex = (last ? get_nicklist_entry(last->nick[0]) : 0);
+    struct UserNode *cuser = last;
+    while(cindex <= VALID_NICK_CHARS_FIRST_LEN) {
+        for(cuser = (cuser ? cuser->next : userList[cindex]); cuser; cuser = cuser->next) {
+            if((cuser->flags & USERFLAG_ISAUTHED) && !strcmp(cuser->auth, auth))
+                return cuser;
+        }
+        cindex++;
+        cuser = NULL;
+    }
+    return NULL;
+}
+
 int getUserCount() {
     int i, count = 0;
     struct UserNode *user;
@@ -187,6 +201,7 @@ struct UserNode* addUser(const char *nick) {
     user->realname[0] = 0;
     user->flags = 0;
     user->channel = NULL;
+    user->last_who = 0;
     user->next = userList[userListIndex];
     userList[userListIndex] = user;
     return user;
@@ -241,6 +256,7 @@ struct UserNode* createTempUser(const char *mask) {
             user->realname[0] = 0;
             user->flags = 0;
             user->channel = NULL;
+            user->last_who = 0;
             ii = i+1;
         } else if(cmask[i] == '.' && !user) {
             //it's a server
@@ -257,6 +273,7 @@ struct UserNode* createTempUser(const char *mask) {
             user->realname[0] = 0;
             user->flags = USERFLAG_ISSERVER;
             user->channel = NULL;
+            user->last_who = 0;
             return user;
         } else if(cmask[i] == '@') {
             if(user == NULL) return NULL;
@@ -279,6 +296,7 @@ struct UserNode* createTempUser(const char *mask) {
                 user->realname[0] = 0;
                 user->flags = 0;
                 user->channel = NULL;
+                user->last_who = 0;
                 return user;
             }
             strcpy(user->host, &cmask[ii]);