]> git.ipfire.org Git - thirdparty/git.git/commitdiff
use fspathhash() everywhere
authorRené Scharfe <l.s.r@web.de>
Fri, 30 Jul 2021 19:06:58 +0000 (21:06 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 30 Jul 2021 19:14:27 +0000 (12:14 -0700)
cf2dc1c238 (speed up alt_odb_usable() with many alternates, 2021-07-07)
introduced the function fspathhash() for calculating path hashes while
respecting the configuration option core.ignorecase.  Call it instead of
open-coding it; the resulting code is shorter and less repetitive.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/sparse-checkout.c
dir.c
merge-recursive.c

index a4bdd7c4940260d8d8fa19a6d4de2ee37d82e7ac..8ba9f13787b058aafa4b349881b7d1518e69eee7 100644 (file)
@@ -380,10 +380,7 @@ static void insert_recursive_pattern(struct pattern_list *pl, struct strbuf *pat
        struct pattern_entry *e = xmalloc(sizeof(*e));
        e->patternlen = path->len;
        e->pattern = strbuf_detach(path, NULL);
-       hashmap_entry_init(&e->ent,
-                          ignore_case ?
-                          strihash(e->pattern) :
-                          strhash(e->pattern));
+       hashmap_entry_init(&e->ent, fspathhash(e->pattern));
 
        hashmap_add(&pl->recursive_hashmap, &e->ent);
 
@@ -399,10 +396,7 @@ static void insert_recursive_pattern(struct pattern_list *pl, struct strbuf *pat
                e = xmalloc(sizeof(struct pattern_entry));
                e->patternlen = newlen;
                e->pattern = xstrndup(oldpattern, newlen);
-               hashmap_entry_init(&e->ent,
-                                  ignore_case ?
-                                  strihash(e->pattern) :
-                                  strhash(e->pattern));
+               hashmap_entry_init(&e->ent, fspathhash(e->pattern));
 
                if (!hashmap_get_entry(&pl->parent_hashmap, e, ent, NULL))
                        hashmap_add(&pl->parent_hashmap, &e->ent);
diff --git a/dir.c b/dir.c
index 23b4417268586e59de969e1ff865607c96888fbb..03c4d212672bc4b68bc45a514fe16180f57ee1f4 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -782,9 +782,7 @@ static void add_pattern_to_hashsets(struct pattern_list *pl, struct path_pattern
                translated->pattern = truncated;
                translated->patternlen = given->patternlen - 2;
                hashmap_entry_init(&translated->ent,
-                                  ignore_case ?
-                                  strihash(translated->pattern) :
-                                  strhash(translated->pattern));
+                                  fspathhash(translated->pattern));
 
                if (!hashmap_get_entry(&pl->recursive_hashmap,
                                       translated, ent, NULL)) {
@@ -813,9 +811,7 @@ static void add_pattern_to_hashsets(struct pattern_list *pl, struct path_pattern
        translated->pattern = dup_and_filter_pattern(given->pattern);
        translated->patternlen = given->patternlen;
        hashmap_entry_init(&translated->ent,
-                          ignore_case ?
-                          strihash(translated->pattern) :
-                          strhash(translated->pattern));
+                          fspathhash(translated->pattern));
 
        hashmap_add(&pl->recursive_hashmap, &translated->ent);
 
@@ -845,10 +841,7 @@ static int hashmap_contains_path(struct hashmap *map,
        /* Check straight mapping */
        p.pattern = pattern->buf;
        p.patternlen = pattern->len;
-       hashmap_entry_init(&p.ent,
-                          ignore_case ?
-                          strihash(p.pattern) :
-                          strhash(p.pattern));
+       hashmap_entry_init(&p.ent, fspathhash(p.pattern));
        return !!hashmap_get_entry(map, &p, ent, NULL);
 }
 
index 7008a90df5ef40b90aa192cba02fcfdba3cc1e95..3355d50e8ad36b8649e26a340c45d456162f03fe 100644 (file)
@@ -61,11 +61,6 @@ static int path_hashmap_cmp(const void *cmp_data,
                return strcmp(a->path, key ? key : b->path);
 }
 
-static unsigned int path_hash(const char *path)
-{
-       return ignore_case ? strihash(path) : strhash(path);
-}
-
 /*
  * For dir_rename_entry, directory names are stored as a full path from the
  * toplevel of the repository and do not include a trailing '/'.  Also:
@@ -463,7 +458,7 @@ static int save_files_dirs(const struct object_id *oid,
        strbuf_addstr(base, path);
 
        FLEX_ALLOC_MEM(entry, path, base->buf, base->len);
-       hashmap_entry_init(&entry->e, path_hash(entry->path));
+       hashmap_entry_init(&entry->e, fspathhash(entry->path));
        hashmap_add(&opt->priv->current_file_dir_set, &entry->e);
 
        strbuf_setlen(base, baselen);
@@ -737,14 +732,14 @@ static char *unique_path(struct merge_options *opt,
 
        base_len = newpath.len;
        while (hashmap_get_from_hash(&opt->priv->current_file_dir_set,
-                                    path_hash(newpath.buf), newpath.buf) ||
+                                    fspathhash(newpath.buf), newpath.buf) ||
               (!opt->priv->call_depth && file_exists(newpath.buf))) {
                strbuf_setlen(&newpath, base_len);
                strbuf_addf(&newpath, "_%d", suffix++);
        }
 
        FLEX_ALLOC_MEM(entry, path, newpath.buf, newpath.len);
-       hashmap_entry_init(&entry->e, path_hash(entry->path));
+       hashmap_entry_init(&entry->e, fspathhash(entry->path));
        hashmap_add(&opt->priv->current_file_dir_set, &entry->e);
        return strbuf_detach(&newpath, NULL);
 }