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