]>
Commit | Line | Data |
---|---|---|
5540d947 RB |
1 | /* |
2 | * Copyright (C) the libgit2 contributors. All rights reserved. | |
3 | * | |
4 | * This file is part of libgit2, distributed under the GNU GPL v2 with | |
5 | * a Linking Exception. For full terms see the included COPYING file. | |
6 | */ | |
7 | #ifndef INCLUDE_attrcache_h__ | |
8 | #define INCLUDE_attrcache_h__ | |
9 | ||
eae0bfdc PP |
10 | #include "common.h" |
11 | ||
823c0e9c | 12 | #include "attr_file.h" |
5540d947 | 13 | #include "strmap.h" |
7d490872 RB |
14 | |
15 | #define GIT_ATTR_CONFIG "core.attributesfile" | |
16 | #define GIT_IGNORE_CONFIG "core.excludesfile" | |
5540d947 RB |
17 | |
18 | typedef struct { | |
7a5ee3dc RB |
19 | char *cfg_attr_file; /* cached value of core.attributesfile */ |
20 | char *cfg_excl_file; /* cached value of core.excludesfile */ | |
7d490872 | 21 | git_strmap *files; /* hash path to git_attr_cache_entry records */ |
40ed4990 RB |
22 | git_strmap *macros; /* hash name to vector<git_attr_assignment> */ |
23 | git_mutex lock; | |
24 | git_pool pool; | |
5540d947 RB |
25 | } git_attr_cache; |
26 | ||
ce6f61da | 27 | extern int git_attr_cache__init(git_repository *repo); |
7d490872 RB |
28 | |
29 | /* get file - loading and reload as needed */ | |
30 | extern int git_attr_cache__get( | |
31 | git_attr_file **file, | |
32 | git_repository *repo, | |
9f779aac | 33 | git_attr_session *attr_session, |
c25aa7cd | 34 | git_attr_file_source *source, |
22a2d3d5 UG |
35 | git_attr_file_parser parser, |
36 | bool allow_macros); | |
7d490872 RB |
37 | |
38 | extern bool git_attr_cache__is_cached( | |
39 | git_repository *repo, | |
c25aa7cd PP |
40 | git_attr_file_source_t source_type, |
41 | const char *filename); | |
7d490872 | 42 | |
823c0e9c RB |
43 | extern int git_attr_cache__alloc_file_entry( |
44 | git_attr_file_entry **out, | |
c25aa7cd | 45 | git_repository *repo, |
823c0e9c RB |
46 | const char *base, |
47 | const char *path, | |
48 | git_pool *pool); | |
49 | ||
7d490872 RB |
50 | extern int git_attr_cache__insert_macro( |
51 | git_repository *repo, git_attr_rule *macro); | |
52 | ||
53 | extern git_attr_rule *git_attr_cache__lookup_macro( | |
54 | git_repository *repo, const char *name); | |
55 | ||
5540d947 | 56 | #endif |