1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-09 18:46:11 +02:00

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>
This commit is contained in:
Brandon Williams 2017-01-27 18:02:04 -08:00 committed by Junio C Hamano
parent 60a12722ac
commit e810e06357
3 changed files with 9 additions and 8 deletions

12
attr.c
View File

@ -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 * dictionary. If no entry is found, create a new attribute and store it in
* the dictionary. * 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; struct git_attr *a;
@ -244,14 +244,14 @@ static struct git_attr *git_attr_internal(const char *name, int namelen)
return a; 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)); return git_attr_internal(name, strlen(name));
} }
/* What does a matched pattern decide? */ /* What does a matched pattern decide? */
struct attr_state { struct attr_state {
struct git_attr *attr; const struct git_attr *attr;
const char *setto; const char *setto;
}; };
@ -278,7 +278,7 @@ struct pattern {
struct match_attr { struct match_attr {
union { union {
struct pattern pat; struct pattern pat;
struct git_attr *attr; const struct git_attr *attr;
} u; } u;
char is_macro; char is_macro;
unsigned num_attr; unsigned num_attr;
@ -898,7 +898,7 @@ static int fill_one(const char *what, struct all_attrs_item *all_attrs,
int i; int i;
for (i = a->num_attr - 1; rem > 0 && i >= 0; 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 **n = &(all_attrs[attr->attr_nr].value);
const char *v = a->state[i].setto; 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 : ""; const char *base = stk->origin ? stk->origin : "";
for (i = stk->num_matches - 1; 0 < rem && 0 <= i; i--) { 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) if (a->is_macro)
continue; continue;
if (path_matches(path, pathlen, basename_offset, if (path_matches(path, pathlen, basename_offset,

2
attr.h
View File

@ -11,7 +11,7 @@ struct all_attrs_item;
* Given a string, return the gitattribute object that * Given a string, return the gitattribute object that
* corresponds to it. * corresponds to it.
*/ */
struct git_attr *git_attr(const char *); const struct git_attr *git_attr(const char *);
/* Internal use */ /* Internal use */
extern const char git_attr__true[]; extern const char git_attr__true[];

View File

@ -166,7 +166,8 @@ int cmd_check_attr(int argc, const char **argv, const char *prefix)
check = attr_check_alloc(); check = attr_check_alloc();
if (!all_attrs) { if (!all_attrs) {
for (i = 0; i < cnt; i++) { 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) if (!a)
return error("%s: not a valid attribute name", return error("%s: not a valid attribute name",
argv[i]); argv[i]);