1#ifndef ATTR_H 2#define ATTR_H 3 4/* An attribute is a pointer to this opaque structure */ 5struct git_attr; 6 7/* opaque structures used internally for attribute collection */ 8struct all_attrs_item; 9struct attr_stack; 10 11/* 12 * Given a string, return the gitattribute object that 13 * corresponds to it. 14 */ 15const struct git_attr *git_attr(const char*); 16 17/* Internal use */ 18externconst char git_attr__true[]; 19externconst char git_attr__false[]; 20 21/* For public to check git_attr_check results */ 22#define ATTR_TRUE(v) ((v) == git_attr__true) 23#define ATTR_FALSE(v) ((v) == git_attr__false) 24#define ATTR_UNSET(v) ((v) == NULL) 25 26/* 27 * Send one or more git_attr_check to git_check_attrs(), and 28 * each 'value' member tells what its value is. 29 * Unset one is returned as NULL. 30 */ 31struct attr_check_item { 32const struct git_attr *attr; 33const char*value; 34}; 35 36struct attr_check { 37int nr; 38int alloc; 39struct attr_check_item *items; 40int all_attrs_nr; 41struct all_attrs_item *all_attrs; 42struct attr_stack *stack; 43}; 44 45externstruct attr_check *attr_check_alloc(void); 46externstruct attr_check *attr_check_initl(const char*, ...); 47externstruct attr_check *attr_check_dup(const struct attr_check *check); 48 49externstruct attr_check_item *attr_check_append(struct attr_check *check, 50const struct git_attr *attr); 51 52externvoidattr_check_reset(struct attr_check *check); 53externvoidattr_check_clear(struct attr_check *check); 54externvoidattr_check_free(struct attr_check *check); 55 56/* 57 * Return the name of the attribute represented by the argument. The 58 * return value is a pointer to a null-delimited string that is part 59 * of the internal data structure; it should not be modified or freed. 60 */ 61externconst char*git_attr_name(const struct git_attr *); 62 63externintgit_check_attr(const char*path,struct attr_check *check); 64 65/* 66 * Retrieve all attributes that apply to the specified path. 67 * check holds the attributes and their values. 68 */ 69externvoidgit_all_attrs(const char*path,struct attr_check *check); 70 71enum git_attr_direction { 72 GIT_ATTR_CHECKIN, 73 GIT_ATTR_CHECKOUT, 74 GIT_ATTR_INDEX 75}; 76voidgit_attr_set_direction(enum git_attr_direction new_direction, 77struct index_state *istate); 78 79externvoidattr_start(void); 80 81#endif/* ATTR_H */