summaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-02-05 00:29:26 +0100
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-02-17 19:50:30 +0100
commit3005855f7e3980185adc63a68c5b8b5f9e3b506f (patch)
tree41e7d5c9a45928b8013f7fdd30d6b707a148f083 /src/config.c
parent5e0dc4af013e23d0cbc737d8ab2756aaf38e1516 (diff)
downloadlibgit2-3005855f7e3980185adc63a68c5b8b5f9e3b506f.tar.gz
Implement setting multivars
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/config.c b/src/config.c
index ccc7362ac..4ff1b2e72 100644
--- a/src/config.c
+++ b/src/config.c
@@ -364,6 +364,24 @@ int git_config_get_multivar(git_config *cfg, const char *name, const char *regex
return GIT_SUCCESS;
}
+int git_config_set_multivar(git_config *cfg, const char *name, const char *regexp, const char *value)
+{
+ file_internal *internal;
+ git_config_file *file;
+ int error = GIT_ENOTFOUND;
+ unsigned int i;
+
+ for (i = cfg->files.length; i > 0; --i) {
+ internal = git_vector_get(&cfg->files, i - 1);
+ file = internal->file;
+ error = file->set_multivar(file, name, regexp, value);
+ if (error < GIT_SUCCESS && error != GIT_ENOTFOUND)
+ git__rethrow(error, "Failed to replace multivar");
+ }
+
+ return GIT_SUCCESS;
+}
+
int git_config_find_global_r(git_buf *path)
{
return git_futils_find_global_file(path, GIT_CONFIG_FILENAME);