Michael Haggerty <mhagger@xxxxxxxxxxxx> writes: > Add a function, git_allattrs(), that reports on all attributes that > are set on a path. > > Signed-off-by: Michael Haggerty <mhagger@xxxxxxxxxxxx> > --- > Documentation/technical/api-gitattributes.txt | 45 +++++++++++++++++------- > attr.c | 43 +++++++++++++++++++++++ > attr.h | 9 +++++ > 3 files changed, 84 insertions(+), 13 deletions(-) > > diff --git a/Documentation/technical/api-gitattributes.txt b/Documentation/technical/api-gitattributes.txt > index ab3a84d..640240e 100644 > --- a/Documentation/technical/api-gitattributes.txt > +++ b/Documentation/technical/api-gitattributes.txt > @@ -22,19 +22,6 @@ Data Structure > ... > (JC) The last line, I think, can now be dropped. This was a marker saying "we lack documentation for this API; bug this person for necessary information and write one". > diff --git a/attr.c b/attr.c > index bfa1f43..9c2fca8 100644 > --- a/attr.c > +++ b/attr.c > @@ -737,6 +737,49 @@ int git_checkattr(const char *path, int num, struct git_attr_check *check) > return 0; > } > > +int git_allattrs(const char *path, int *num, struct git_attr_check **check) > +{ > + struct attr_stack *stk; > + const char *cp; > + int dirlen, pathlen, i, rem, count, j; > + > + bootstrap_attr_stack(); > + for (i = 0; i < attr_nr; i++) > + check_all_attr[i].value = ATTR__UNKNOWN; > + > + pathlen = strlen(path); > + cp = strrchr(path, '/'); > + if (!cp) > + dirlen = 0; > + else > + dirlen = cp - path; > + prepare_attr_stack(path, dirlen); > + rem = attr_nr; > + for (stk = attr_stack; 0 < rem && stk; stk = stk->prev) > + rem = fill(path, pathlen, stk, rem); Shouldn't the above part at least should be refactored instead of copied and pasted from git_checkattr()? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html