diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-05-05 14:22:53 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-05-05 14:22:53 -0700 |
commit | 48ecd122ea6fb8cf12fb4029974c314e5d9efb62 (patch) | |
tree | 88f90fa8c9d903f072a2b1c647c51a9899e520c7 /src/attr.h | |
parent | 2218fd57a50ceb851cb131939bf0747e072e40f6 (diff) | |
parent | 4ef14af93517b3842bc0dfa24147cf10dd029582 (diff) | |
download | libgit2-48ecd122ea6fb8cf12fb4029974c314e5d9efb62.tar.gz |
Merge pull request #659 from libgit2/development-merge
New-error-handling
Diffstat (limited to 'src/attr.h')
-rw-r--r-- | src/attr.h | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/src/attr.h b/src/attr.h index 5dbbb2366..a35b1160f 100644 --- a/src/attr.h +++ b/src/attr.h @@ -8,33 +8,49 @@ #define INCLUDE_attr_h__ #include "attr_file.h" +#include "strmap.h" + +#define GIT_ATTR_CONFIG "core.attributesfile" +#define GIT_IGNORE_CONFIG "core.excludesfile" typedef struct { int initialized; - git_hashtable *files; /* hash path to git_attr_file of rules */ - git_hashtable *macros; /* hash name to vector<git_attr_assignment> */ + git_pool pool; + git_strmap *files; /* hash path to git_attr_file of rules */ + git_strmap *macros; /* hash name to vector<git_attr_assignment> */ + const char *cfg_attr_file; /* cached value of core.attributesfile */ + const char *cfg_excl_file; /* cached value of core.excludesfile */ } git_attr_cache; +typedef int (*git_attr_file_parser)( + git_repository *, const char *, git_attr_file *); + extern int git_attr_cache__init(git_repository *repo); extern int git_attr_cache__insert_macro( git_repository *repo, git_attr_rule *macro); -extern int git_attr_cache__lookup_or_create_file( +extern git_attr_rule *git_attr_cache__lookup_macro( + git_repository *repo, const char *name); + +extern int git_attr_cache__push_file( git_repository *repo, - const char *key, + const char *base, const char *filename, - int (*loader)(git_repository *, const char *, git_attr_file *), - git_attr_file **file_ptr); + git_attr_file_source source, + git_attr_file_parser parse, + git_vector *stack); -extern int git_attr_cache__push_file( +extern int git_attr_cache__internal_file( git_repository *repo, - git_vector *stack, - const char *base, - const char *filename, - int (*loader)(git_repository *, const char *, git_attr_file *)); + const char *key, + git_attr_file **file_ptr); + +/* returns true if path is in cache */ +extern bool git_attr_cache__is_cached( + git_repository *repo, git_attr_file_source source, const char *path); -/* returns GIT_SUCCESS if path is in cache */ -extern int git_attr_cache__is_cached(git_repository *repo, const char *path); +extern int git_attr_cache__decide_sources( + uint32_t flags, bool has_wd, bool has_index, git_attr_file_source *srcs); #endif |