]>
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, |
823c0e9c | 34 | git_attr_file_source source, |
7d490872 RB |
35 | const char *base, |
36 | const char *filename, | |
0c9c969a UG |
37 | git_attr_file_parser parser, |
38 | bool allow_macros); | |
7d490872 RB |
39 | |
40 | extern bool git_attr_cache__is_cached( | |
41 | git_repository *repo, | |
823c0e9c | 42 | git_attr_file_source source, |
7d490872 RB |
43 | const char *path); |
44 | ||
823c0e9c RB |
45 | extern int git_attr_cache__alloc_file_entry( |
46 | git_attr_file_entry **out, | |
47 | const char *base, | |
48 | const char *path, | |
49 | git_pool *pool); | |
50 | ||
7d490872 RB |
51 | extern int git_attr_cache__insert_macro( |
52 | git_repository *repo, git_attr_rule *macro); | |
53 | ||
54 | extern git_attr_rule *git_attr_cache__lookup_macro( | |
55 | git_repository *repo, const char *name); | |
56 | ||
5540d947 | 57 | #endif |