git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Nanako Shiraishi <nanako3@lavabit.com>, git@vger.kernel.org
Subject: [PATCH 5/6] textconv: use shell to run helper
Date: Wed, 30 Dec 2009 06:01:09 -0500	[thread overview]
Message-ID: <20091230110109.GE22959@coredump.intra.peff.net> (raw)
In-Reply-To: <20091230095634.GA16349@coredump.intra.peff.net>

Currently textconv helpers are run directly. Running through
the shell is useful because the user can provide a program
with command line arguments, like "antiword -f".

It also makes textconv more consistent with other parts of
git, most of which run their helpers using the shell.

The downside is that textconv helpers with shell
metacharacters (like space) in the filename will be broken.

Signed-off-by: Jeff King <peff@peff.net>
---
This is the first actual change in behavior. This patch and 6/6 should
perhaps be held back with a warning period. I am inclined to consider it
a bug that they didn't use the shell, and this is fixing it.

 diff.c                         |    1 +
 t/t4030-diff-textconv.sh       |    2 +-
 t/t4031-diff-rewrite-binary.sh |    2 +-
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/diff.c b/diff.c
index d14a575..2794238 100644
--- a/diff.c
+++ b/diff.c
@@ -3818,6 +3818,7 @@ static char *run_textconv(const char *pgm, struct diff_filespec *spec,
 	*arg = NULL;
 
 	memset(&child, 0, sizeof(child));
+	child.use_shell = 1;
 	child.argv = argv;
 	child.out = -1;
 	if (start_command(&child) != 0 ||
diff --git a/t/t4030-diff-textconv.sh b/t/t4030-diff-textconv.sh
index a3f0897..c16d538 100755
--- a/t/t4030-diff-textconv.sh
+++ b/t/t4030-diff-textconv.sh
@@ -48,7 +48,7 @@ test_expect_success 'file is considered binary by plumbing' '
 
 test_expect_success 'setup textconv filters' '
 	echo file diff=foo >.gitattributes &&
-	git config diff.foo.textconv "$PWD"/hexdump &&
+	git config diff.foo.textconv "\"$PWD\""/hexdump &&
 	git config diff.fail.textconv false
 '
 
diff --git a/t/t4031-diff-rewrite-binary.sh b/t/t4031-diff-rewrite-binary.sh
index a894c60..27fb31b 100755
--- a/t/t4031-diff-rewrite-binary.sh
+++ b/t/t4031-diff-rewrite-binary.sh
@@ -54,7 +54,7 @@ chmod +x dump
 
 test_expect_success 'setup textconv' '
 	echo file diff=foo >.gitattributes &&
-	git config diff.foo.textconv "$PWD"/dump
+	git config diff.foo.textconv "\"$PWD\""/dump
 '
 
 test_expect_success 'rewrite diff respects textconv' '
-- 
1.6.6.65.g050d2.dirty

  parent reply	other threads:[~2009-12-30 11:01 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-14 22:17 Giving command line parameter to textconv command? Nanako Shiraishi
2009-12-14 23:31 ` Junio C Hamano
2009-12-15  3:11   ` Nanako Shiraishi
2009-12-15  5:56     ` Junio C Hamano
2009-12-15 16:49       ` Jeff King
2009-12-16  1:05         ` Junio C Hamano
2009-12-16  1:13           ` Jeff King
2009-12-15 17:03   ` Jeff King
2009-12-15 17:23     ` Junio C Hamano
2009-12-30  3:13   ` Nanako Shiraishi
2009-12-30  8:05     ` Junio C Hamano
2009-12-30  9:56       ` Jeff King
2009-12-30 10:53         ` [PATCH 1/6] run-command: add "use shell" option Jeff King
2009-12-30 13:55           ` Erik Faye-Lund
2010-01-01 22:12           ` Johannes Sixt
2009-12-30 10:53         ` [PATCH 2/6] run-command: convert simple callsites to use_shell Jeff King
2009-12-30 10:55         ` [PATCH 3/6] run-command: optimize out useless shell calls Jeff King
2009-12-31 16:54           ` Johannes Sixt
2009-12-31 19:47             ` Junio C Hamano
2009-12-31 21:41               ` Johannes Sixt
2009-12-31 21:41             ` Jeff King
2009-12-31 22:16               ` Johannes Sixt
2010-01-01  4:50                 ` Jeff King
2010-01-01 10:08                   ` Johannes Sixt
2009-12-30 10:56         ` [PATCH 4/6] editor: use run_command's shell feature Jeff King
2009-12-30 11:01         ` Jeff King [this message]
2009-12-30 11:03         ` [PATCH 6/6] diff: run external diff helper with shell Jeff King
2010-01-01 22:14           ` [PATCH 7/6] t0021: use $SHELL_PATH for the filter script Johannes Sixt
2010-01-01 22:15             ` [PATCH 8/6] t4030, t4031: work around bogus MSYS bash path conversion Johannes Sixt
2010-01-03  7:24             ` [PATCH 7/6] t0021: use $SHELL_PATH for the filter script Jeff King
2010-01-04 15:50               ` Johannes Sixt
2010-01-04 16:03                 ` Jeff King
2010-01-04 16:46                   ` Johannes Sixt

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=20091230110109.GE22959@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=nanako3@lavabit.com \
    /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).