]>
Commit | Line | Data |
---|---|---|
bb742ede | 1 | /* |
359fc2d2 | 2 | * Copyright (C) the libgit2 contributors. All rights reserved. |
bb742ede VM |
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 | */ | |
6d7bb4e0 CMN |
7 | #ifndef INCLUDE_config_h__ |
8 | #define INCLUDE_config_h__ | |
9 | ||
eae0bfdc PP |
10 | #include "common.h" |
11 | ||
c0335005 | 12 | #include "git2.h" |
6d7bb4e0 | 13 | #include "git2/config.h" |
c0335005 | 14 | #include "vector.h" |
44daec42 | 15 | #include "repository.h" |
6b45cb8a | 16 | |
8c7c5fa5 | 17 | #define GIT_CONFIG_FILENAME_PROGRAMDATA "config" |
73b51450 | 18 | #define GIT_CONFIG_FILENAME_SYSTEM "gitconfig" |
5540d947 RB |
19 | #define GIT_CONFIG_FILENAME_GLOBAL ".gitconfig" |
20 | #define GIT_CONFIG_FILENAME_XDG "config" | |
21 | ||
22 | #define GIT_CONFIG_FILENAME_INREPO "config" | |
01ad7b3a | 23 | #define GIT_CONFIG_FILE_MODE 0666 |
8adbf2ed | 24 | |
5d4cd003 | 25 | struct git_config { |
9462c471 | 26 | git_refcount rc; |
ac3d33df | 27 | git_vector backends; |
5d4cd003 CMN |
28 | }; |
29 | ||
a4b75dcf CMN |
30 | extern int git_config__global_location(git_buf *buf); |
31 | ||
aba70781 | 32 | extern int git_config_rename_section( |
33 | git_repository *repo, | |
34 | const char *old_section_name, /* eg "branch.dummy" */ | |
35 | const char *new_section_name); /* NULL to drop the old section */ | |
36 | ||
f4be8209 CMN |
37 | extern int git_config__normalize_name(const char *in, char **out); |
38 | ||
9f77b3f6 RB |
39 | /* internal only: does not normalize key and sets out to NULL if not found */ |
40 | extern int git_config__lookup_entry( | |
9a97f49e | 41 | git_config_entry **out, |
9f77b3f6 RB |
42 | const git_config *cfg, |
43 | const char *key, | |
44 | bool no_errors); | |
45 | ||
8286300a RB |
46 | /* internal only: update and/or delete entry string with constraints */ |
47 | extern int git_config__update_entry( | |
48 | git_config *cfg, | |
49 | const char *key, | |
50 | const char *value, | |
51 | bool overwrite_existing, | |
52 | bool only_if_existing); | |
53 | ||
9f77b3f6 RB |
54 | /* |
55 | * Lookup functions that cannot fail. These functions look up a config | |
56 | * value and return a fallback value if the value is missing or if any | |
57 | * failures occur while trying to access the value. | |
58 | */ | |
59 | ||
9a97f49e | 60 | extern char *git_config__get_string_force( |
9f77b3f6 RB |
61 | const git_config *cfg, const char *key, const char *fallback_value); |
62 | ||
63 | extern int git_config__get_bool_force( | |
64 | const git_config *cfg, const char *key, int fallback_value); | |
65 | ||
66 | extern int git_config__get_int_force( | |
67 | const git_config *cfg, const char *key, int fallback_value); | |
f4be8209 | 68 | |
22a2d3d5 UG |
69 | /* API for repository configmap-style lookups from config - not cached, but |
70 | * uses configmap value maps and fallbacks | |
2b52a0bf | 71 | */ |
22a2d3d5 UG |
72 | extern int git_config__configmap_lookup( |
73 | int *out, git_config *config, git_configmap_item item); | |
2b52a0bf | 74 | |
15c38103 CMN |
75 | /** |
76 | * The opposite of git_config_lookup_map_value, we take an enum value | |
77 | * and map it to the string or bool value on the config. | |
78 | */ | |
22a2d3d5 UG |
79 | int git_config_lookup_map_enum(git_configmap_t *type_out, |
80 | const char **str_out, const git_configmap *maps, | |
81 | size_t map_n, int enum_val); | |
5340d63d CMN |
82 | |
83 | /** | |
84 | * Unlock the backend with the highest priority | |
85 | * | |
86 | * Unlocking will allow other writers to updat the configuration | |
87 | * file. Optionally, any changes performed since the lock will be | |
88 | * applied to the configuration. | |
89 | * | |
90 | * @param cfg the configuration | |
91 | * @param commit boolean which indicates whether to commit any changes | |
92 | * done since locking | |
93 | * @return 0 or an error code | |
94 | */ | |
95 | GIT_EXTERN(int) git_config_unlock(git_config *cfg, int commit); | |
96 | ||
5d4cd003 | 97 | #endif |