diff options
author | Vincent Ambo <tazjin@google.com> | 2020-05-25T23·06+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-05-25T23·06+0100 |
commit | 93ba78d6f4632ef1c5228965e3edc8c0faf88c1e (patch) | |
tree | 85730c182a9f5f492ade8e8ccdb1c2356f9900bd /third_party/git/attr.c | |
parent | 6f8fbf4aa4b1654ab27d4829e114538761817de0 (diff) |
revert(3p/git): Revert merge of git upstream at v2.26.2 r/852
This causes cgit to serve error pages, which is undesirable. This reverts commit 5229c9b232de5bfa959ad6ebbb4c8192ac513352, reversing changes made to f2b211131f2347342dde63975b09cf603149f1a3.
Diffstat (limited to 'third_party/git/attr.c')
-rw-r--r-- | third_party/git/attr.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/third_party/git/attr.c b/third_party/git/attr.c index a826b2ef1fab..93dc16b59cd6 100644 --- a/third_party/git/attr.c +++ b/third_party/git/attr.c @@ -1,6 +1,7 @@ /* * Handle git attributes. See gitattributes(5) for a description of - * the file syntax, and attr.h for a description of the API. + * the file syntax, and Documentation/technical/api-gitattributes.txt + * for a description of the API. * * One basic design decision here is that we are not going to support * an insanely large number of attributes. @@ -61,7 +62,7 @@ static struct attr_hashmap g_attr_hashmap; /* The container for objects stored in "struct attr_hashmap" */ struct attr_hash_entry { - struct hashmap_entry ent; + struct hashmap_entry ent; /* must be the first member! */ const char *key; /* the key; memory should be owned by value */ size_t keylen; /* length of the key */ void *value; /* the stored value */ @@ -69,14 +70,12 @@ struct attr_hash_entry { /* attr_hashmap comparison function */ static int attr_hash_entry_cmp(const void *unused_cmp_data, - const struct hashmap_entry *eptr, - const struct hashmap_entry *entry_or_key, + const void *entry, + const void *entry_or_key, const void *unused_keydata) { - const struct attr_hash_entry *a, *b; - - a = container_of(eptr, const struct attr_hash_entry, ent); - b = container_of(entry_or_key, const struct attr_hash_entry, ent); + const struct attr_hash_entry *a = entry; + const struct attr_hash_entry *b = entry_or_key; return (a->keylen != b->keylen) || strncmp(a->key, b->key, a->keylen); } @@ -99,10 +98,10 @@ static void *attr_hashmap_get(struct attr_hashmap *map, if (!map->map.tablesize) attr_hashmap_init(map); - hashmap_entry_init(&k.ent, memhash(key, keylen)); + hashmap_entry_init(&k, memhash(key, keylen)); k.key = key; k.keylen = keylen; - e = hashmap_get_entry(&map->map, &k, ent, NULL); + e = hashmap_get(&map->map, &k, NULL); return e ? e->value : NULL; } @@ -118,12 +117,12 @@ static void attr_hashmap_add(struct attr_hashmap *map, attr_hashmap_init(map); e = xmalloc(sizeof(struct attr_hash_entry)); - hashmap_entry_init(&e->ent, memhash(key, keylen)); + hashmap_entry_init(e, memhash(key, keylen)); e->key = key; e->keylen = keylen; e->value = value; - hashmap_add(&map->map, &e->ent); + hashmap_add(&map->map, e); } struct all_attrs_item { @@ -162,12 +161,12 @@ static void all_attrs_init(struct attr_hashmap *map, struct attr_check *check) if (size != check->all_attrs_nr) { struct attr_hash_entry *e; struct hashmap_iter iter; + hashmap_iter_init(&map->map, &iter); REALLOC_ARRAY(check->all_attrs, size); check->all_attrs_nr = size; - hashmap_for_each_entry(&map->map, &iter, e, - ent /* member name */) { + while ((e = hashmap_iter_next(&iter))) { const struct git_attr *a = e->value; check->all_attrs[a->attr_nr].attr = a; } @@ -260,7 +259,7 @@ struct pattern { const char *pattern; int patternlen; int nowildcardlen; - unsigned flags; /* PATTERN_FLAG_* */ + unsigned flags; /* EXC_FLAG_* */ }; /* @@ -401,11 +400,11 @@ static struct match_attr *parse_attr_line(const char *line, const char *src, char *p = (char *)&(res->state[num_attr]); memcpy(p, name, namelen); res->u.pat.pattern = p; - parse_path_pattern(&res->u.pat.pattern, + parse_exclude_pattern(&res->u.pat.pattern, &res->u.pat.patternlen, &res->u.pat.flags, &res->u.pat.nowildcardlen); - if (res->u.pat.flags & PATTERN_FLAG_NEGATIVE) { + if (res->u.pat.flags & EXC_FLAG_NEGATIVE) { warning(_("Negative patterns are ignored in git attributes\n" "Use '\\!' for literal leading exclamation.")); goto fail_return; @@ -992,10 +991,10 @@ static int path_matches(const char *pathname, int pathlen, int prefix = pat->nowildcardlen; int isdir = (pathlen && pathname[pathlen - 1] == '/'); - if ((pat->flags & PATTERN_FLAG_MUSTBEDIR) && !isdir) + if ((pat->flags & EXC_FLAG_MUSTBEDIR) && !isdir) return 0; - if (pat->flags & PATTERN_FLAG_NODIR) { + if (pat->flags & EXC_FLAG_NODIR) { return match_basename(pathname + basename_offset, pathlen - basename_offset - isdir, pattern, prefix, |