config: really keep value-internal whitespace verbatim
commitf0b894443040cb222fbd80d9661cfa7583a9164f
authorDragan Simic <dsimic@manjaro.org>
Thu, 21 Mar 2024 06:06:06 +0000 (21 07:06 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 21 Mar 2024 22:57:09 +0000 (21 15:57 -0700)
treed78cd7097c77d5b347b5757b1ff3962ef2da27c2
parent0d49b1e5a8c789dd3f1029f382bd76a464b72da0
config: really keep value-internal whitespace verbatim

Fix a bug in function parse_value() that prevented whitespace characters
(i.e. spaces and horizontal tabs) found inside configuration option values
from being parsed and returned in their original form.  The bug caused any
number of consecutive whitespace characters to be wrongly "squashed" into
the same number of space characters.

This bug was introduced back in July 2009, in commit ebdaae372b46 ("config:
Keep inner whitespace verbatim").

Further investigation showed that setting a configuration value, by invoking
git-config(1), converts value-internal horizontal tabs into "\t" escape
sequences, which the buggy value-parsing logic in function parse_value()
didn't "squash" into spaces.  That's why the test included in the ebdaae37
commit passed, which presumably made the bug remain undetected for this long.
On the other hand, value-internal literal horizontal tab characters, found in
a configuration file edited by hand, do get "squashed" by the value-parsing
logic, so the right choice was to fix this bug by making the value-internal
whitespace characters preserved verbatim.

Signed-off-by: Dragan Simic <dsimic@manjaro.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c