summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2012-08-13 20:56:28 -0700
committerVicent Martí <vicent@github.com>2012-08-13 20:56:28 -0700
commitc86dd38a64deb191f6700e4ad5c79a4e3034034d (patch)
tree8db5285f8054fcd616c6434147c8e4afc9fd9eef
parentc9d78bde943213f4c2594d1df175336573678b74 (diff)
parent616c1433b89d143a41035495a0a8504a19a72532 (diff)
downloadlibgit2-c86dd38a64deb191f6700e4ad5c79a4e3034034d.tar.gz
Merge pull request #866 from arrbee/fix-config-file-parsing
Config file parser includes = in name if no space around it
-rw-r--r--src/config_file.c6
-rw-r--r--tests-clar/config/read.c16
-rw-r--r--tests-clar/resources/config/config144
3 files changed, 22 insertions, 4 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 80c63d2a3..547509b9f 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -1343,10 +1343,8 @@ static int parse_variable(diskfile_backend *cfg, char **var_name, char **var_val
else
value_start = var_end + 1;
- if (git__isspace(var_end[-1])) {
- do var_end--;
- while (git__isspace(var_end[0]));
- }
+ do var_end--;
+ while (git__isspace(*var_end));
*var_name = git__strndup(line, var_end - line + 1);
GITERR_CHECK_ALLOC(*var_name);
diff --git a/tests-clar/config/read.c b/tests-clar/config/read.c
index 574ff8196..fcd22463d 100644
--- a/tests-clar/config/read.c
+++ b/tests-clar/config/read.c
@@ -266,6 +266,22 @@ void test_config_read__foreach_match(void)
git_config_free(cfg);
}
+void test_config_read__whitespace_not_required_around_assignment(void)
+{
+ git_config *cfg;
+ const char *str;
+
+ cl_git_pass(git_config_open_ondisk(&cfg, cl_fixture("config/config14")));
+
+ cl_git_pass(git_config_get_string(&str, cfg, "a.b"));
+ cl_assert_equal_s(str, "c");
+
+ cl_git_pass(git_config_get_string(&str, cfg, "d.e"));
+ cl_assert_equal_s(str, "f");
+
+ git_config_free(cfg);
+}
+
#if 0
BEGIN_TEST(config10, "a repo's config overrides the global config")
diff --git a/tests-clar/resources/config/config14 b/tests-clar/resources/config/config14
new file mode 100644
index 000000000..ef2198c45
--- /dev/null
+++ b/tests-clar/resources/config/config14
@@ -0,0 +1,4 @@
+[a]
+ b=c
+[d]
+ e = f