aboutsummaryrefslogtreecommitdiff
path: root/src/hash.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2016-01-25 16:10:46 -0500
committerFranklin Wei <git@fwei.tk>2016-01-25 16:10:46 -0500
commita1acf425cfb00a41c7862c915eb024207658c814 (patch)
treefcee7cf8a1c204b779ab50a3545e8671012d7643 /src/hash.c
parentd351bb34ba256d6fbf0869485bcf75ec46646e74 (diff)
downloadnetcosm-a1acf425cfb00a41c7862c915eb024207658c814.zip
netcosm-a1acf425cfb00a41c7862c915eb024207658c814.tar.gz
netcosm-a1acf425cfb00a41c7862c915eb024207658c814.tar.bz2
netcosm-a1acf425cfb00a41c7862c915eb024207658c814.tar.xz
inventory works
Diffstat (limited to '')
-rw-r--r--src/hash.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/hash.c b/src/hash.c
index a34e530..da15157 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -260,3 +260,26 @@ size_t hash_size(void *ptr)
struct hash_map *map = ptr;
return map->n_entries;
}
+
+void *hash_dup(void *ptr)
+{
+ struct hash_map *map = ptr;
+
+ struct hash_map *ret = calloc(1, sizeof(struct hash_map));
+ memcpy(ret, map, sizeof(*ret));
+
+ ret->table = calloc(ret->table_sz, sizeof(struct hash_node*));
+ ret->n_entries = 0;
+
+ void *save;
+ while(1)
+ {
+ void *key;
+ void *data = hash_iterate(ptr, &save, &key);
+ if(!data)
+ break;
+ ptr = NULL;
+ hash_insert(ret, key, data);
+ }
+ return ret;
+}