On Mon, 2011-08-29 at 11:58 -0400, Jeff King wrote: > Isn't his config somewhat broken? It looks like this: > > last = "!f(){ since="$1"; shift; git lg --since=\"last $since\" "$@"; }; f" > > Those interior double-quotes should all be backslash-escaped. I didn't > check, but git should interpret this as: > > !f(){ since=$1; shift; git lg --since="last $since" $@; }; f > > which is probably not quite what he wanted (the quotes around $1 were > actually superfluous, but the ones around $@ are important). Yes, those should be escaped to do what he probably intends. Nonetheless, certainly a parsing bug. > That being said, I think it is intentional that the value is not just "a > single double-quoted chunk" but rather could consist of several quoted > (or unquoted) chunks concatenated together. What does your parser think > of: > > [foo] > bar = "foo"bar"baz" > > It should be: > > $ git config foo.bar > foobarbaz And with the below patch to config-gitlike, it does -- thanks for the bug report. - Alex --------8<----------- >From 433dcc2f739c8906c65329a899b45424c146535c Mon Sep 17 00:00:00 2001 From: Alex Vandiver <alexmv@xxxxxxxxxxxxxxxxx> Date: Mon, 29 Aug 2011 12:04:37 -0400 Subject: [PATCH] Allow quoted strings to adjoin directly to unquoted strings This resolves a bug wherein: [foo] bar = "foo"bar"baz" ...was incorrectly parsed as << foo.bar=foobar"baz" >> and not the correct << foo.bar=foobarbaz >>. Make the fall-through value not consume quotes when consuming a token, as it should be instead parsed as the start of a quoted-value. This bug was only evident when the quoted value abutted the unquoted value with no separating space. --- lib/Config/GitLike.pm | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/lib/Config/GitLike.pm b/lib/Config/GitLike.pm index c19911e..8a7195b 100644 --- a/lib/Config/GitLike.pm +++ b/lib/Config/GitLike.pm @@ -333,7 +333,7 @@ sub parse_content { $value .= $v; } # valid value (no escape codes) - elsif ($c =~ s/\A([^\t \\\n]+)//im) { + elsif ($c =~ s/\A([^\t \\\n"]+)//im) { $value .= $1; # unparseable } -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html