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 */ 14externconst char git_attr__true[]; 15externconst 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_attr(), and 24 * each 'value' member tells what its value is. 25 * Unset one is returned as NULL. 26 */ 27struct git_attr_check { 28struct git_attr *attr; 29const char*value; 30}; 31 32/* 33 * Return the name of the attribute represented by the argument. The 34 * return value is a pointer to a null-delimited string that is part 35 * of the internal data structure; it should not be modified or freed. 36 */ 37char*git_attr_name(struct git_attr *); 38 39intgit_check_attr(const char*path,int,struct git_attr_check *); 40 41/* 42 * Retrieve all attributes that apply to the specified path. *num 43 * will be set the the number of attributes on the path; **check will 44 * be set to point at a newly-allocated array of git_attr_check 45 * objects describing the attributes and their values. *check must be 46 * free()ed by the caller. 47 */ 48intgit_all_attrs(const char*path,int*num,struct git_attr_check **check); 49 50enum git_attr_direction { 51 GIT_ATTR_CHECKIN, 52 GIT_ATTR_CHECKOUT, 53 GIT_ATTR_INDEX 54}; 55voidgit_attr_set_direction(enum git_attr_direction,struct index_state *); 56 57#endif/* ATTR_H */