summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/hash.c b/hash.c
index c2cf9ca..3adfb68 100644
--- a/hash.c
+++ b/hash.c
@@ -20,6 +20,8 @@
THE SOFTWARE.
*/
+#include "config.h"
+
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -41,14 +43,11 @@ hash(const char *string)
}
static void
-strcpy_lwr(char *dst, const char *src)
+str_tolower(char *s)
{
- while(1) {
- *dst = tolower(*src);
- if(*src == '\0')
- break;
- src++;
- dst++;
+ while(*s != '\0') {
+ *s = tolower(*s);
+ s++;
}
}
@@ -97,12 +96,11 @@ putHash(HashTablePtr table, char *key, char *value, int prio)
for(bp = table[i]; bp; bp = bp->next) {
if(strcasecmp(bp->key, key) == 0) {
if(prio > bp->prio) {
- keycopy = malloc(strlen(key) + 1);
+ keycopy = strdup(key);
if(keycopy == NULL) goto fail;
- strcpy_lwr(keycopy, key);
- valuecopy = malloc(strlen(value) + 1);
+ str_tolower(keycopy);
+ valuecopy = strdup(value);
if(valuecopy == NULL) goto fail;
- strcpy(valuecopy, value);
free(bp->key);
free(bp->value);
bp->key = keycopy;
@@ -111,14 +109,13 @@ putHash(HashTablePtr table, char *key, char *value, int prio)
return 1;
}
}
- keycopy = malloc(strlen(key) + 1);
+ keycopy = strdup(key);
if(keycopy == NULL)
goto fail;
- strcpy_lwr(keycopy, key);
- valuecopy = malloc(strlen(value) + 1);
+ str_tolower(keycopy);
+ valuecopy = strdup(value);
if(valuecopy == NULL)
goto fail;
- strcpy(valuecopy, value);
bp = malloc(sizeof(HashBucketRec));
if(bp == NULL)
goto fail;