]>
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 | ||
823c0e9c | 10 | #include "attr_file.h" |
5540d947 | 11 | #include "strmap.h" |
7d490872 RB |
12 | |
13 | #define GIT_ATTR_CONFIG "core.attributesfile" | |
14 | #define GIT_IGNORE_CONFIG "core.excludesfile" | |
5540d947 RB |
15 | |
16 | typedef struct { | |
7a5ee3dc RB |
17 | char *cfg_attr_file; /* cached value of core.attributesfile */ |
18 | char *cfg_excl_file; /* cached value of core.excludesfile */ | |
7d490872 | 19 | git_strmap *files; /* hash path to git_attr_cache_entry records */ |
40ed4990 RB |
20 | git_strmap *macros; /* hash name to vector<git_attr_assignment> */ |
21 | git_mutex lock; | |
22 | git_pool pool; | |
5540d947 RB |
23 | } git_attr_cache; |
24 | ||
823c0e9c | 25 | extern int git_attr_cache__do_init(git_repository *repo); |
5540d947 | 26 | |
823c0e9c RB |
27 | #define git_attr_cache__init(REPO) \ |
28 | (git_repository_attr_cache(REPO) ? 0 : git_attr_cache__do_init(REPO)) | |
7d490872 RB |
29 | |
30 | /* get file - loading and reload as needed */ | |
31 | extern int git_attr_cache__get( | |
32 | git_attr_file **file, | |
33 | git_repository *repo, | |
9f779aac | 34 | git_attr_session *attr_session, |
823c0e9c | 35 | git_attr_file_source source, |
7d490872 RB |
36 | const char *base, |
37 | const char *filename, | |
823c0e9c | 38 | git_attr_file_parser parser); |
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 |