changeset 106:c587a99e2096

Drop internal use and storage of encoded usernames.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 22 Oct 2010 12:07:15 +0300
parents a094a9b8cad9
children 8037a3a7e491
files libnnchat.c libnnchat.h
diffstat 2 files changed, 21 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/libnnchat.c	Fri Oct 22 12:06:55 2010 +0300
+++ b/libnnchat.c	Fri Oct 22 12:07:15 2010 +0300
@@ -633,17 +633,17 @@
 }
 
 
-nn_user_t *nn_user_find_enc(const nn_userhash_t *list, const char *encname)
+nn_user_t *nn_user_find(const nn_userhash_t *list, const char *name)
 {
     uint8_t hash;
     
     if (list == NULL) return NULL;
     
-    hash = nn_hash_user(encname);
+    hash = nn_hash_user(name);
     if (list->buckets[hash] != NULL) {
         nn_user_t *curr = list->buckets[hash];
         while (curr != NULL) {
-            if (strcasecmp(curr->encname, encname) == 0)
+            if (strcasecmp(curr->name, name) == 0)
                 return curr;
             curr = curr->next;
         }
@@ -653,16 +653,16 @@
 }
 
 
-nn_user_t *nn_user_match(const nn_userhash_t *list, const char *str, const char *current)
+nn_user_t *nn_user_match(const nn_userhash_t *list, const char *pattern, const char *current)
 {
     uint8_t hash;
     
     if (list == NULL) return NULL;
 
-    hash = nn_hash_user(str);
+    hash = nn_hash_user(pattern);
     if (list->buckets[hash] != NULL) {
         nn_user_t *curr = list->buckets[hash];
-        int len = strlen(str);
+        size_t len = strlen(pattern);
 
         if (current != NULL) {
             nn_user_t *found = NULL;
@@ -680,7 +680,7 @@
         }
         
         while (curr != NULL) {
-            if (strncasecmp(curr->name, str, len) == 0)
+            if (len <= strlen(curr->name) && strncasecmp(curr->name, pattern, len) == 0)
                 return curr;
             curr = curr->next;
         }
@@ -696,51 +696,50 @@
 }
 
 
-int nn_userhash_insert(nn_userhash_t *list, const char *encname)
+int nn_userhash_insert(nn_userhash_t *list, const char *name)
 {
     uint8_t hash;
     nn_user_t *user;
     
     /* Check arguments */
-    if (list == NULL || encname == NULL)
+    if (list == NULL || name == NULL)
         return -1;
     
     /* Check if username is already there */
-    if (nn_user_find_enc(list, encname) != NULL)
+    if (nn_user_find(list, name) != NULL)
         return 1;
     
     /* No, we'll add it */
     if ((user = th_calloc(1, sizeof(nn_user_t))) == NULL)
         return -3;
     
-    user->encname = th_strdup(encname);
-    user->name = nn_dbldecode_str(encname);
-    if (user->encname == NULL || user->name == NULL)
+    user->name = th_strdup(name);
+    if (user->name == NULL)
         return -4;
     
-    hash = nn_hash_user(encname);
+    hash = nn_hash_user(name);
     nn_user_insert(&(list->buckets[hash]), user);
 
     return 0;
 }
 
 
-int nn_userhash_delete(nn_userhash_t *list, const char *encname)
+int nn_userhash_delete(nn_userhash_t *list, const char *name)
 {
     uint8_t hash;
     
     /* Check arguments */
-    if (list == NULL || encname == NULL)
+    if (list == NULL || name == NULL)
         return -1;
     
     /* Check if username is already there */
-    hash = nn_hash_user(encname);
+    hash = nn_hash_user(name);
     if (list->buckets[hash] != NULL) {
         nn_user_t *curr, *prev;
         curr = list->buckets[hash];
         prev = NULL;
         while (curr != NULL) {
-            if (strcasecmp(curr->encname, encname) == 0) {
+            if (strcasecmp(curr->name, name) == 0) {
                 if (prev)
                     prev->next = curr->next;
                 else
@@ -770,7 +769,6 @@
         return NULL;
     
     /* Copy relevant data */
-    user->encname = th_strdup(src->encname);
     user->name = th_strdup(src->name);
     user->lastspoke = src->lastspoke;
     user->joined = src->joined;
@@ -781,7 +779,6 @@
 
 void nn_user_free(nn_user_t *user)
 {
-   th_free(user->encname);
    th_free(user->name);
    th_free(user);
 }
--- a/libnnchat.h	Fri Oct 22 12:06:55 2010 +0300
+++ b/libnnchat.h	Fri Oct 22 12:07:15 2010 +0300
@@ -38,7 +38,7 @@
 
 
 typedef struct _nn_user_t {
-    char *name, *encname;
+    char *name;
     time_t lastspoke, joined;
     struct _nn_user_t *next;
 } nn_user_t;
@@ -67,14 +67,13 @@
 nn_userhash_t *nn_userhash_new(void);
 nn_user_t * nn_userhash_foreach(const nn_userhash_t *, int (*func)(const nn_user_t *));
 nn_user_t * nn_user_match(const nn_userhash_t *list, const char *str, const char *current);
-int         nn_userhash_insert(nn_userhash_t *, const char *encname);
-int         nn_userhash_delete(nn_userhash_t *, const char *encname);
+int         nn_userhash_insert(nn_userhash_t *, const char *name);
+int         nn_userhash_delete(nn_userhash_t *, const char *name);
 void        nn_userhash_free(nn_userhash_t *);
 void        nn_user_free(nn_user_t *);
 void        nn_user_free_list(nn_user_t *);
 nn_user_t * nn_user_copy(const nn_user_t *src);
-nn_user_t * nn_user_find_enc(const nn_userhash_t *list, const char *encname);
-nn_user_t * nn_user_match_enc(const nn_userhash_t *list, const char *encname, const int index);
+nn_user_t * nn_user_find(const nn_userhash_t *list, const char *name);
 
 char *      nn_encode_str1(const char *str);
 char *      nn_decode_str1(const char *str);