attr: pass struct attr_check to collect_some_attrs

The old callchain used to take an array of attr_check_item items.
Instead pass the 'attr_check' container object to 'collect_some_attrs()'
and access the fields in the data structure directly.

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:01:59 -08:00 committed by Junio C Hamano
parent 1295c21524
commit 6bc2e3f709

33
attr.c
View File

@ -846,9 +846,7 @@ static int macroexpand_one(int nr, int rem)
* check_all_attr. If num is non-zero, only attributes in check[] are * check_all_attr. If num is non-zero, only attributes in check[] are
* collected. Otherwise all attributes are collected. * collected. Otherwise all attributes are collected.
*/ */
static void collect_some_attrs(const char *path, int num, static void collect_some_attrs(const char *path, struct attr_check *check)
struct attr_check_item *check)
{ {
struct attr_stack *stk; struct attr_stack *stk;
int i, pathlen, rem, dirlen; int i, pathlen, rem, dirlen;
@ -871,17 +869,18 @@ static void collect_some_attrs(const char *path, int num,
prepare_attr_stack(path, dirlen); prepare_attr_stack(path, dirlen);
for (i = 0; i < attr_nr; i++) for (i = 0; i < attr_nr; i++)
check_all_attr[i].value = ATTR__UNKNOWN; check_all_attr[i].value = ATTR__UNKNOWN;
if (num && !cannot_trust_maybe_real) { if (check->nr && !cannot_trust_maybe_real) {
rem = 0; rem = 0;
for (i = 0; i < num; i++) { for (i = 0; i < check->nr; i++) {
if (!check[i].attr->maybe_real) { const struct git_attr *a = check->items[i].attr;
if (!a->maybe_real) {
struct attr_check_item *c; struct attr_check_item *c;
c = check_all_attr + check[i].attr->attr_nr; c = check_all_attr + a->attr_nr;
c->value = ATTR__UNSET; c->value = ATTR__UNSET;
rem++; rem++;
} }
} }
if (rem == num) if (rem == check->nr)
return; return;
} }
@ -890,18 +889,17 @@ static void collect_some_attrs(const char *path, int num,
rem = fill(path, pathlen, basename_offset, stk, rem); rem = fill(path, pathlen, basename_offset, stk, rem);
} }
static int git_check_attrs(const char *path, int num, int git_check_attr(const char *path, struct attr_check *check)
struct attr_check_item *check)
{ {
int i; int i;
collect_some_attrs(path, num, check); collect_some_attrs(path, check);
for (i = 0; i < num; i++) { for (i = 0; i < check->nr; i++) {
const char *value = check_all_attr[check[i].attr->attr_nr].value; const char *value = check_all_attr[check->items[i].attr->attr_nr].value;
if (value == ATTR__UNKNOWN) if (value == ATTR__UNKNOWN)
value = ATTR__UNSET; value = ATTR__UNSET;
check[i].value = value; check->items[i].value = value;
} }
return 0; return 0;
@ -912,7 +910,7 @@ void git_all_attrs(const char *path, struct attr_check *check)
int i; int i;
attr_check_reset(check); attr_check_reset(check);
collect_some_attrs(path, check->nr, check->items); collect_some_attrs(path, check);
for (i = 0; i < attr_nr; i++) { for (i = 0; i < attr_nr; i++) {
const char *name = check_all_attr[i].attr->name; const char *name = check_all_attr[i].attr->name;
@ -925,11 +923,6 @@ void git_all_attrs(const char *path, struct attr_check *check)
} }
} }
int git_check_attr(const char *path, struct attr_check *check)
{
return git_check_attrs(path, check->nr, check->items);
}
void git_attr_set_direction(enum git_attr_direction new, struct index_state *istate) void git_attr_set_direction(enum git_attr_direction new, struct index_state *istate)
{ {
enum git_attr_direction old = direction; enum git_attr_direction old = direction;