X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FUserNode.c;h=7be5ebdac2115a29ec6eeb6df69af88776680901;hb=c575e458c6257e75b97884847143b20965a5dfda;hp=f23548b57e22a485f62e7dd9396530e4478b7004;hpb=95fed4deda0319bee515e44ceec0c77061a2c04e;p=NeonServV5.git diff --git a/src/UserNode.c b/src/UserNode.c index f23548b..7be5ebd 100644 --- a/src/UserNode.c +++ b/src/UserNode.c @@ -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 @@ -187,6 +187,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 +242,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 +259,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 +282,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]); @@ -294,8 +298,23 @@ int renameUser(struct UserNode* user, const char *new_nick) { strcpy(user->nick, new_nick); return 1; } - int userListIndex = get_nicklist_entry(*new_nick); - delUser(user, 0); + //delUser(user, 0); //EPIC FAIL! This deletes the user from the channel Userlist -.- + //manually remove the user from the old userList + int userListIndex = get_nicklist_entry(user->nick[0]); + if(userListIndex != -1) { + struct UserNode *cuser, *last_user = NULL; + for(cuser = userList[userListIndex]; cuser; cuser = cuser->next) { + if(cuser == user) { + if(last_user) + last_user->next = user->next; + else + userList[userListIndex] = user->next; + break; + } else + last_user = cuser; + } + } + userListIndex = get_nicklist_entry(*new_nick); strcpy(user->nick, new_nick); user->next = userList[userListIndex]; userList[userListIndex] = user;