From: Junio C Hamano Date: Mon, 21 May 2007 18:03:36 GMT Subject: Re: [PATCH] config: Add --quoted option to produce machine-parsable output Message-ID: <7vejladpfr.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <11797696193384-git-send-email-frank@lichtenheld.de> Frank Lichtenheld writes: > This option will enclose key names in quotes (") if they > contain a subsection and then escape " and \. It will also > escape line breaks in values. Together this should produce > an easily parsable output. > > Affects --list and --get-* > > Signed-off-by: Frank Lichtenheld > --- > builtin-config.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++----- > 1 files changed, 83 insertions(+), 9 deletions(-) > > Will add asciidoc documentation and test cases if people think that this is > a good idea. > > I'm writing C about once a year, so I really don't mind being told if it's > crap ;) We probably would want to make this compatible with the quoting rules various fo "host" language have. quote.c has host language support to implement {perl,python,tcl}_quote_print() for single string values or keys, so we should extend that idea. In your application, what you are trying to do is to show a "hash" (key => value) in a notation that is friendly to the host language. Git.pm could simply do: my $eval = `git config --perl --get-regexp 'gitcvs\..*'`; my $cfg = eval "$eval"; if you code your "perl" notation to produce: +{ 'gitcvs.ext.enabled' => 'false', 'gitcvs.logfile' => '/var/log/gitcvs.log', } in order to read things in. Hmm?