]> git.ipfire.org Git - thirdparty/git.git/blobdiff - name-hash.c
l10n: fr v2.24.0 rnd2
[thirdparty/git.git] / name-hash.c
index 73b83adf3d03e52d9211469e998cbceee24a90c2..ceb1d7bd6f7c594160b8162f306afb37556dc0e5 100644 (file)
@@ -17,14 +17,16 @@ struct dir_entry {
 };
 
 static int dir_entry_cmp(const void *unused_cmp_data,
-                        const void *entry,
-                        const void *entry_or_key,
+                        const struct hashmap_entry *eptr,
+                        const struct hashmap_entry *entry_or_key,
                         const void *keydata)
 {
-       const struct dir_entry *e1 = entry;
-       const struct dir_entry *e2 = entry_or_key;
+       const struct dir_entry *e1, *e2;
        const char *name = keydata;
 
+       e1 = container_of(eptr, const struct dir_entry, ent);
+       e2 = container_of(entry_or_key, const struct dir_entry, ent);
+
        return e1->namelen != e2->namelen || strncasecmp(e1->name,
                        name ? name : e2->name, e1->namelen);
 }
@@ -35,7 +37,7 @@ static struct dir_entry *find_dir_entry__hash(struct index_state *istate,
        struct dir_entry key;
        hashmap_entry_init(&key.ent, hash);
        key.namelen = namelen;
-       return hashmap_get(&istate->dir_hash, &key.ent, name);
+       return hashmap_get_entry(&istate->dir_hash, &key, ent, name);
 }
 
 static struct dir_entry *find_dir_entry(struct index_state *istate,
@@ -114,12 +116,15 @@ static void hash_index_entry(struct index_state *istate, struct cache_entry *ce)
 }
 
 static int cache_entry_cmp(const void *unused_cmp_data,
-                          const void *entry,
-                          const void *entry_or_key,
+                          const struct hashmap_entry *eptr,
+                          const struct hashmap_entry *entry_or_key,
                           const void *remove)
 {
-       const struct cache_entry *ce1 = entry;
-       const struct cache_entry *ce2 = entry_or_key;
+       const struct cache_entry *ce1, *ce2;
+
+       ce1 = container_of(eptr, const struct cache_entry, ent);
+       ce2 = container_of(entry_or_key, const struct cache_entry, ent);
+
        /*
         * For remove_name_hash, find the exact entry (pointer equality); for
         * index_file_exists, find all entries with matching hash code and
@@ -708,8 +713,7 @@ struct cache_entry *index_file_exists(struct index_state *istate, const char *na
 
        ce = hashmap_get_entry_from_hash(&istate->name_hash, hash, NULL,
                                         struct cache_entry, ent);
-       hashmap_for_each_entry_from(&istate->name_hash, ce,
-                                       struct cache_entry, ent) {
+       hashmap_for_each_entry_from(&istate->name_hash, ce, ent) {
                if (same_name(ce, name, namelen, icase))
                        return ce;
        }
@@ -722,6 +726,6 @@ void free_name_hash(struct index_state *istate)
                return;
        istate->name_hash_initialized = 0;
 
-       hashmap_free(&istate->name_hash, 0);
-       hashmap_free(&istate->dir_hash, 1);
+       hashmap_free(&istate->name_hash);
+       hashmap_free_entries(&istate->dir_hash, struct dir_entry, ent);
 }