From: Matthieu Moy Date: Thu, 5 Aug 2010 10:05:22 +0000 (+0200) Subject: git-gui: use shell to launch textconv filter in "blame" X-Git-Tag: gitgui-0.13.0~5 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=62f9a632c819bd53a5b7dbe40409ab086a4bce10;p=git.git git-gui: use shell to launch textconv filter in "blame" The textconv filters may include multiple arguments and may make use of unix shell features. To maintain compatibility with 'git blame' ensure these commands are passed through bash. Reported-by: Kirill Smelkov Signed-off-by: Matthieu Moy Signed-off-by: Pat Thoyts --- diff --git a/Makefile b/Makefile index 197b55edf..e22ba5c32 100644 --- a/Makefile +++ b/Makefile @@ -215,6 +215,7 @@ endif $(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-VARS $(QUIET_GEN)rm -f $@ $@+ && \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ + -e 's|@@SHELL_PATH@@|$(SHELL_PATH_SQ)|' \ -e '1,30s|^ argv0=$$0| argv0=$(GITGUI_SCRIPT)|' \ -e '1,30s|^ exec wish | exec '\''$(TCLTK_PATH_SED)'\'' |' \ -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \ diff --git a/git-gui.sh b/git-gui.sh index 815725d1e..8ade423eb 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -128,6 +128,7 @@ set _githtmldir {} set _reponame {} set _iscygwin {} set _search_path {} +set _shellpath {@@SHELL_PATH@@} set _trace [lsearch -exact $argv --trace] if {$_trace >= 0} { @@ -137,6 +138,11 @@ if {$_trace >= 0} { set _trace 0 } +proc shellpath {} { + global _shellpath + return $_shellpath +} + proc appname {} { global _appname return $_appname diff --git a/lib/blame.tcl b/lib/blame.tcl index 2137ec968..77656d367 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -460,7 +460,9 @@ method _load {jump} { } if {$commit eq {}} { if {$do_textconv ne 0} { - set fd [open |[list $textconv $path] r] + # Run textconv with sh -c "..." to allow it to + # contain command + arguments. + set fd [open |[list [shellpath] -c "$textconv \"\$0\"" $path] r] } else { set fd [open $path r] }