]> git.meshlink.io Git - catta/blobdiff - avahi-core/hashmap.c
Don't consider incoming goodbye packets as conflicting unless they match one of our...
[catta] / avahi-core / hashmap.c
index 0c44d4ff5920d2439744bc6f04e437f459015f4b..4d2fa3cf5d62f57092331b2c472022c2c6f8005b 100644 (file)
@@ -69,6 +69,7 @@ static Entry* entry_get(AvahiHashmap *m, const void *key) {
 
 static void entry_free(AvahiHashmap *m, Entry *e, int stolen) {
     unsigned idx;
+    assert(m);
     assert(e);
 
     idx = m->hash_func(e->key) % HASH_MAP_SIZE;
@@ -203,7 +204,6 @@ int avahi_hashmap_replace(AvahiHashmap *m, void *key, void *value) {
     return 0;
 }
 
-
 void avahi_hashmap_remove(AvahiHashmap *m, const void *key) {
     Entry *e;
     
@@ -215,6 +215,18 @@ void avahi_hashmap_remove(AvahiHashmap *m, const void *key) {
     entry_free(m, e, 0);
 }
 
+void avahi_hashmap_foreach(AvahiHashmap *m, AvahiHashmapForeachCallback callback, void *userdata) {
+    Entry *e, *next;
+    assert(m);
+    assert(callback);
+
+    for (e = m->entries_list; e; e = next) {
+        next = e->entries_next;
+
+        callback(e->key, e->value, userdata);
+    }
+}
+
 unsigned avahi_string_hash(const void *data) {
     const char *p = data;
     unsigned hash = 0;
@@ -231,19 +243,14 @@ int avahi_string_equal(const void *a, const void *b) {
     return strcmp(p, q) == 0;
 }
 
-unsigned avahi_domain_hash(const void *data) {
-    unsigned hash = 0;
-    const char *s;
-    
-    for (;;) {
-        char c[65];
+unsigned avahi_int_hash(const void *data) {
+    const int *i = data;
 
-        if (!avahi_unescape_label(&s, c, sizeof(c)))
-            return hash;
+    return (unsigned) *i;
+}
 
-        if (!c[0])
-            continue;
-        
-        hash += avahi_string_hash(avahi_strdown(c));
-    }
+int avahi_int_equal(const void *a, const void *b) {
+    const int *_a = a, *_b = b;
+
+    return *_a == *_b;
 }