diff options
author | Brandon Williams <bmwill@google.com> | 2017-01-27 18:02:04 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-02-01 13:46:53 -0800 |
commit | e810e0635767afbc9b304d5256fbdb26b59644fa (patch) | |
tree | 22565ccc823a22ec95e1bf937a7a8150bf52c79f | |
parent | 60a12722ac80bc55b43581a7719d25d1bb7a9882 (diff) | |
download | git-e810e0635767afbc9b304d5256fbdb26b59644fa.tar.gz |
attr: tighten const correctness with git_attr and match_attr
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | attr.c | 12 | ||||
-rw-r--r-- | attr.h | 2 | ||||
-rw-r--r-- | builtin/check-attr.c | 3 |
3 files changed, 9 insertions, 8 deletions
@@ -220,7 +220,7 @@ static void report_invalid_attr(const char *name, size_t len, * dictionary. If no entry is found, create a new attribute and store it in * the dictionary. */ -static struct git_attr *git_attr_internal(const char *name, int namelen) +static const struct git_attr *git_attr_internal(const char *name, int namelen) { struct git_attr *a; @@ -244,14 +244,14 @@ static struct git_attr *git_attr_internal(const char *name, int namelen) return a; } -struct git_attr *git_attr(const char *name) +const struct git_attr *git_attr(const char *name) { return git_attr_internal(name, strlen(name)); } /* What does a matched pattern decide? */ struct attr_state { - struct git_attr *attr; + const struct git_attr *attr; const char *setto; }; @@ -278,7 +278,7 @@ struct pattern { struct match_attr { union { struct pattern pat; - struct git_attr *attr; + const struct git_attr *attr; } u; char is_macro; unsigned num_attr; @@ -898,7 +898,7 @@ static int fill_one(const char *what, struct all_attrs_item *all_attrs, int i; for (i = a->num_attr - 1; rem > 0 && i >= 0; i--) { - struct git_attr *attr = a->state[i].attr; + const struct git_attr *attr = a->state[i].attr; const char **n = &(all_attrs[attr->attr_nr].value); const char *v = a->state[i].setto; @@ -922,7 +922,7 @@ static int fill(const char *path, int pathlen, int basename_offset, const char *base = stk->origin ? stk->origin : ""; for (i = stk->num_matches - 1; 0 < rem && 0 <= i; i--) { - struct match_attr *a = stk->attrs[i]; + const struct match_attr *a = stk->attrs[i]; if (a->is_macro) continue; if (path_matches(path, pathlen, basename_offset, @@ -11,7 +11,7 @@ struct all_attrs_item; * Given a string, return the gitattribute object that * corresponds to it. */ -struct git_attr *git_attr(const char *); +const struct git_attr *git_attr(const char *); /* Internal use */ extern const char git_attr__true[]; diff --git a/builtin/check-attr.c b/builtin/check-attr.c index 40cdff13e9..4d01ca0c8b 100644 --- a/builtin/check-attr.c +++ b/builtin/check-attr.c @@ -166,7 +166,8 @@ int cmd_check_attr(int argc, const char **argv, const char *prefix) check = attr_check_alloc(); if (!all_attrs) { for (i = 0; i < cnt; i++) { - struct git_attr *a = git_attr(argv[i]); + const struct git_attr *a = git_attr(argv[i]); + if (!a) return error("%s: not a valid attribute name", argv[i]); |