Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15
DORMANTno replies

[PATCH] config: Keep inner whitespace verbatim

From: Björn Steinbrink <hidden>
Date: 2016-06-15 22:47:07
Subsystem: the rest · Maintainer: Linus Torvalds

Configuration values are expected to be quoted when they have leading or
trailing whitespace, but inner whitespace should be kept verbatim even if
the value is not quoted. This is already documented in git-config(1), but
the code caused inner whitespace to be collapsed to a single space,
breaking, for example, clones from a path that has two consecutive spaces
in it, as future fetches would only see a single space.

Reported-by: John te Bokkel <redacted>
Signed-off-by: Björn Steinbrink <redacted>
---
 config.c               |    6 +++---
 t/t1300-repo-config.sh |    5 +++++
 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/config.c b/config.c
index 738b244..e25b7d6 100644
--- a/config.c
+++ b/config.c
@@ -62,7 +62,8 @@ static char *parse_value(void)
 		if (comment)
 			continue;
 		if (isspace(c) && !quote) {
-			space = 1;
+			if (len)
+				space++;
 			continue;
 		}
 		if (!quote) {
@@ -72,9 +73,8 @@ static char *parse_value(void)
 			}
 		}
 		if (space) {
-			if (len)
+			for (; space; --space)
 				value[len++] = ' ';
-			space = 0;
 		}
 		if (c == '\\') {
 			c = get_next_char();
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index 8c43dcd..83b7294 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -755,6 +755,11 @@ echo >>result
 
 test_expect_success '--null --get-regexp' 'cmp result expect'
 
+test_expect_success 'inner whitespace kept verbatim' '
+	git config section.val "foo 	  bar" &&
+	test "z$(git config section.val)" = "zfoo 	  bar"
+'
+
 test_expect_success SYMLINKS 'symlinked configuration' '
 
 	ln -s notyet myconfig &&
-- 
1.6.3.GIT
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help