Junio C Hamano | d0bfd02 | 2007-04-12 01:07:32 -0700 | [diff] [blame] | 1 | #ifndef ATTR_H |
| 2 | #define ATTR_H |
| 3 | |
| 4 | /* An attribute is a pointer to this opaque structure */ |
| 5 | struct git_attr; |
| 6 | |
Junio C Hamano | a5e92ab | 2007-04-18 16:16:37 -0700 | [diff] [blame] | 7 | /* |
| 8 | * Given a string, return the gitattribute object that |
| 9 | * corresponds to it. |
| 10 | */ |
Junio C Hamano | 7fb0eaa | 2010-01-16 20:39:59 -0800 | [diff] [blame] | 11 | struct git_attr *git_attr(const char *); |
Junio C Hamano | d0bfd02 | 2007-04-12 01:07:32 -0700 | [diff] [blame] | 12 | |
Junio C Hamano | 515106f | 2007-04-16 21:33:31 -0700 | [diff] [blame] | 13 | /* Internal use */ |
Junio C Hamano | a5e92ab | 2007-04-18 16:16:37 -0700 | [diff] [blame] | 14 | extern const char git_attr__true[]; |
| 15 | extern const char git_attr__false[]; |
Junio C Hamano | 515106f | 2007-04-16 21:33:31 -0700 | [diff] [blame] | 16 | |
| 17 | /* For public to check git_attr_check results */ |
Junio C Hamano | a5e92ab | 2007-04-18 16:16:37 -0700 | [diff] [blame] | 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) |
Junio C Hamano | 515106f | 2007-04-16 21:33:31 -0700 | [diff] [blame] | 21 | |
Junio C Hamano | a5e92ab | 2007-04-18 16:16:37 -0700 | [diff] [blame] | 22 | /* |
Michael Haggerty | d932f4e | 2011-08-04 06:36:33 +0200 | [diff] [blame] | 23 | * Send one or more git_attr_check to git_check_attr(), and |
Junio C Hamano | a5e92ab | 2007-04-18 16:16:37 -0700 | [diff] [blame] | 24 | * each 'value' member tells what its value is. |
| 25 | * Unset one is returned as NULL. |
| 26 | */ |
Junio C Hamano | d0bfd02 | 2007-04-12 01:07:32 -0700 | [diff] [blame] | 27 | struct git_attr_check { |
| 28 | struct git_attr *attr; |
Junio C Hamano | a5e92ab | 2007-04-18 16:16:37 -0700 | [diff] [blame] | 29 | const char *value; |
Junio C Hamano | d0bfd02 | 2007-04-12 01:07:32 -0700 | [diff] [blame] | 30 | }; |
| 31 | |
Michael Haggerty | 352404a | 2011-08-04 06:36:17 +0200 | [diff] [blame] | 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 | */ |
| 37 | char *git_attr_name(struct git_attr *); |
| 38 | |
Michael Haggerty | d932f4e | 2011-08-04 06:36:33 +0200 | [diff] [blame] | 39 | int git_check_attr(const char *path, int, struct git_attr_check *); |
Junio C Hamano | d0bfd02 | 2007-04-12 01:07:32 -0700 | [diff] [blame] | 40 | |
Michael Haggerty | ee548df | 2011-08-04 06:36:23 +0200 | [diff] [blame] | 41 | /* |
| 42 | * Retrieve all attributes that apply to the specified path. *num |
Jim Meyering | 65c2b2b | 2012-03-28 10:45:36 +0200 | [diff] [blame] | 43 | * will be set to the number of attributes on the path; **check will |
Michael Haggerty | ee548df | 2011-08-04 06:36:23 +0200 | [diff] [blame] | 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 | */ |
| 48 | int git_all_attrs(const char *path, int *num, struct git_attr_check **check); |
| 49 | |
Junio C Hamano | 06f33c1 | 2009-03-13 21:24:08 -0700 | [diff] [blame] | 50 | enum git_attr_direction { |
| 51 | GIT_ATTR_CHECKIN, |
Nguyễn Thái Ngọc Duy | 4191e80 | 2009-04-18 00:17:58 +0200 | [diff] [blame] | 52 | GIT_ATTR_CHECKOUT, |
Gary V. Vaughan | 4b05548 | 2010-05-14 09:31:35 +0000 | [diff] [blame] | 53 | GIT_ATTR_INDEX |
Junio C Hamano | 06f33c1 | 2009-03-13 21:24:08 -0700 | [diff] [blame] | 54 | }; |
| 55 | void git_attr_set_direction(enum git_attr_direction, struct index_state *); |
| 56 | |
Junio C Hamano | d0bfd02 | 2007-04-12 01:07:32 -0700 | [diff] [blame] | 57 | #endif /* ATTR_H */ |