git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Hudec <bulb@ucw.cz>
To: Frank Lichtenheld <frank@lichtenheld.de>
Cc: Git Mailing List <git@vger.kernel.org>, Junio C Hamano <junkio@cox.net>
Subject: Re: [PATCH] config: Add --quoted option to produce machine-parsable output
Date: Mon, 21 May 2007 21:54:23 +0200	[thread overview]
Message-ID: <20070521195423.GC5082@efreet.light.src> (raw)
In-Reply-To: <11797696193384-git-send-email-frank@lichtenheld.de>

[-- Attachment #1: Type: text/plain, Size: 1672 bytes --]

On Mon, May 21, 2007 at 19:46:59 +0200, Frank Lichtenheld wrote:
> 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.

That will lead to either eval (which runs perl parser and probably won't win
anything) or regexps (which is not big win over parsing the .ini directly
with them) on the perl side. IMHO only thing that would actually be faster is
NUL-separated entries.

Either:
    KEY <NUL> VALUE <NUL>

or:
    KEY <TAB> VALUE <NUL>

I am not sure whether there can be multi-valued entries. If so, than there
are three options:

1. Simply repeated key/value pairs:
   KEY <NUL> VALUE1 <NUL> KEY <NUL> VALUE2 <NUL>.
   KEY <TAB> VALUE1 <NUL> KEY <TAB> VALUE2 <NUL> resp.

2. Key/count/values:
   KEY <NUL> 1 <NUL> VALUE <NUL>
   KEY <NUL> 2 <NUL> VALUE1 <NUL> VALUE2 <NUL>
   (there's probably no benefit for the tab-nul format, because the first
   value must be terminated with NUL)

3. Empty-entry terminated:
   KEY <NUL> VALUE <NUL> <NUL>
   KEY <NUL> VALUE1 <NUL> VALUE2 <NUL> <NUL>
   (again no point in terminating the KEY with tab)

The advantage of such format is, that it can be parsed with:
    local $/ = "\0";
    while(<INPUT>) {
	$hash{$_} = <INPUT>;
    }
and slight variations for the other variants. It should be similarly easy
from python and C. Shell won't like it, though.

Note: In both bash and zsh, read -d '' line reads NUL-terminated "lines".
However, dash does not have -d option to read :-(.

-- 
						 Jan 'Bulb' Hudec <bulb@ucw.cz>

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

  parent reply	other threads:[~2007-05-21 19:55 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-20 22:59 [RFC] Implementing git config handling in Git.pm Frank Lichtenheld
2007-05-20 23:14 ` Petr Baudis
2007-05-21 17:46 ` [PATCH] config: Add --quoted option to produce machine-parsable output Frank Lichtenheld
2007-05-21 18:03   ` Junio C Hamano
2007-05-21 18:46     ` Johannes Schindelin
2007-05-21 21:18       ` Junio C Hamano
2007-05-21 21:53         ` Johannes Schindelin
2007-05-21 19:54   ` Jan Hudec [this message]
2007-05-21 20:58     ` Frank Lichtenheld
2007-05-21 22:37       ` Jakub Narebski
2007-06-17 23:25         ` [PATCH/RFC] config: Add --null/-z option for null-delimted output Frank Lichtenheld
2007-06-19  0:55           ` Johannes Schindelin
2007-06-19  1:16             ` Jakub Narebski
2007-06-19  1:17             ` Frank Lichtenheld
2007-06-19  1:32               ` Johannes Schindelin
2007-06-19  1:37             ` Junio C Hamano
2007-06-19  2:12               ` Frank Lichtenheld
2007-06-19 11:09                 ` Johannes Schindelin
2007-06-19 11:19                   ` David Kastrup
2007-06-19 11:50                   ` Jakub Narebski
2007-06-19 15:21                   ` Frank Lichtenheld
2007-06-19 15:57                     ` Johannes Schindelin
2007-06-19 17:26                       ` Frank Lichtenheld
2007-06-20 10:31                         ` Johannes Schindelin
2007-06-20 16:54                           ` Jakub Narebski
2007-06-21 23:56           ` Jakub Narebski
2007-06-22 12:02             ` Frank Lichtenheld
2007-06-25 14:03             ` [PATCH 1/3] config: Complete documentation of --get-regexp Frank Lichtenheld
2007-06-25 14:03             ` [PATCH 2/3] config: Change output of --get-regexp for valueless keys Frank Lichtenheld
2007-06-27  2:14               ` Junio C Hamano
2007-06-25 14:03             ` [PATCH 3/3] config: Add --null/-z option for null-delimted output Frank Lichtenheld
2007-06-25 23:29               ` Jakub Narebski
2007-06-26 10:47                 ` Frank Lichtenheld
2007-06-27  2:14                 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070521195423.GC5082@efreet.light.src \
    --to=bulb@ucw.cz \
    --cc=frank@lichtenheld.de \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).