Re: [RFC] Git config file reader in Perl (WIP)
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Jan 17, 2007, 09:48 UTC
- Message-ID
- <200701171048.03686.jnareb@gmail.com>
- In-Reply-To
- <Pine.LNX.4.63.0701170948420.22628@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin wrote:
> > On Wed, 17 Jan 2007, Jakub Narebski wrote: > >> Dnia wtorek 16. stycznia 2007 23:56, Johannes Schindelin napisa?:
Show 10 quoted lines
>>> 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>
The same with quoted:
[someSection] qthisKey = "has\na\nvalue\with\nseveral\nnewlines"
There is no escaping besides escaping " and escape character i.e. escaping \ in git config. Se "\n" would work as well as NUL. (It is said explicitely that subsection names cannot contain "\n").
Show 15 quoted lines
>> 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 "".
Show 8 quoted lines
>> in "git repo-config -l" output (note missing '=' !), and I guess differs >> for some case from >> >> [section] >> noval = > > Yes, this is not a boolean. The difference is that the callback function > is called with NULL in the former case, and with "" in the latter.
-- Jakub Narebski Poland