]> git.proxmox.com Git - libgit2.git/blob - src/libgit2/attrcache.h
New upstream version 1.5.0+ds
[libgit2.git] / src / libgit2 / attrcache.h
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
10 #include "common.h"
11
12 #include "attr_file.h"
13 #include "strmap.h"
14
15 #define GIT_ATTR_CONFIG "core.attributesfile"
16 #define GIT_IGNORE_CONFIG "core.excludesfile"
17
18 typedef struct {
19 char *cfg_attr_file; /* cached value of core.attributesfile */
20 char *cfg_excl_file; /* cached value of core.excludesfile */
21 git_strmap *files; /* hash path to git_attr_cache_entry records */
22 git_strmap *macros; /* hash name to vector<git_attr_assignment> */
23 git_mutex lock;
24 git_pool pool;
25 } git_attr_cache;
26
27 extern int git_attr_cache__init(git_repository *repo);
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,
33 git_attr_session *attr_session,
34 git_attr_file_source *source,
35 git_attr_file_parser parser,
36 bool allow_macros);
37
38 extern bool git_attr_cache__is_cached(
39 git_repository *repo,
40 git_attr_file_source_t source_type,
41 const char *filename);
42
43 extern int git_attr_cache__alloc_file_entry(
44 git_attr_file_entry **out,
45 git_repository *repo,
46 const char *base,
47 const char *path,
48 git_pool *pool);
49
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
56 #endif