Subject: Re: [RFC] Git config file reader in Perl (WIP)

From: Jakub Narebski <[email-masked]>
Date: Wed, 17 Jan 2007 13:11:35 +0100

Johannes Schindelin wrote:
> 
> On Wed, 17 Jan 2007, Jakub Narebski wrote:
> 
>> Johannes Schindelin wrote:
>>> 
>>> On Wed, 17 Jan 2007, Jakub Narebski wrote:
>>> 
>>>> Johannes Schindelin wrote:
>>>> 
>>>>> So, how about a "git repo-config --dump" which outputs a stream of NUL 
>>>>> separated keys and values? This should be really easy to "parse", and 
>>>>> there are no ambiguities: No key or value can contain a NUL.
>>>> 
>>>> Good idea, although "\n" would work as well as NUL.
>>> 
>>> No it would not:
>>> 
>>> 	[someSection]
>>> 		thisKey = has\na\nvalue\with\nseveral\nnewlines
>> 
>> $ fatal: bad config file line <nn> in <config>
> 
> Yeah, sorry. But you got the point.

No, I don't got the point. No key or value can contain "\n".

>>>> The only problem is with "key without value" case, i.e. something like
>>>> 
>>>>   [section]
>>>>   	noval
>>>> 
>>>> which shows as
>>>> 
>>>>   section.noval
>>> 
>>> but is equivalent to
>>> 
>>> 	[section]
>>> 		noval = true
>>> 
>>> Since it is by definition a boolean value.
>> 
>> But only for "git repo-config --bool --get section.noval" output.
>> Semantically equivalent to "true".
>> 
>> But without --bool it returns like it was "".
> 
> Yes, it returns "", but this is _wrong_. A single "[section] noval" _only_ 
> makes sense as a boolean. The information lies in its _presence_, which is 
> as good as saying "true".

With "\n" as separator you can simply rrturn NUL in the noval case.

-- 
Jakub Narebski
Poland