From 5d8561e4257f13756010daca1bb098bdef9cb97c Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Fri, 23 Oct 2009 18:09:22 +0200 Subject: Store a pointer to the correct user (user->real_user) for users with mapped nicks to avoid looking up the nick on every call to user_get(). --- user.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'user.c') diff --git a/user.c b/user.c index 4fa0174..dc4b5ed 100644 --- a/user.c +++ b/user.c @@ -12,8 +12,7 @@ void user_init() { memset(users, 0, sizeof(struct user_t) * USERS_MAX); } -struct user_t *user_get(char *_nick) { - char *nick = nick_get(_nick); +struct user_t *user_get(char *nick) { unsigned long hash = sdbm(nick); int index = hash % USERS_MAX; @@ -35,9 +34,11 @@ struct user_t *user_get(char *_nick) { memset(user->lines, 0, 24*4 * sizeof(unsigned long)); user->words = user->characters = user->kicks = user->kicked = 0; user->next = NULL; + char *_nick = nick_get(nick); + user->real_user = strcmp(nick, _nick) ? user_get(_nick) : NULL; } - return user; + return (user->real_user ? user->real_user : user); } void user_free() { -- cgit v1.2.3