2 * Copyright (C) the libgit2 contributors. All rights reserved.
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.
7 #ifndef INCLUDE_attrcache_h__
8 #define INCLUDE_attrcache_h__
12 #include "attr_file.h"
15 #define GIT_ATTR_CONFIG "core.attributesfile"
16 #define GIT_IGNORE_CONFIG "core.excludesfile"
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> */
27 extern int git_attr_cache__init(git_repository
*repo
);
29 /* get file - loading and reload as needed */
30 extern int git_attr_cache__get(
33 git_attr_session
*attr_session
,
34 git_attr_file_source
*source
,
35 git_attr_file_parser parser
,
38 extern bool git_attr_cache__is_cached(
40 git_attr_file_source_t source_type
,
41 const char *filename
);
43 extern int git_attr_cache__alloc_file_entry(
44 git_attr_file_entry
**out
,
50 extern int git_attr_cache__insert_macro(
51 git_repository
*repo
, git_attr_rule
*macro
);
53 extern git_attr_rule
*git_attr_cache__lookup_macro(
54 git_repository
*repo
, const char *name
);