diff libnnchat.c @ 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 eaa524e153f9
children f323b137ca08
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);
 }