@matheusbsbs / matheus-bagliano / commits / b575b2f1f4
Fork 0

gitk: Handle external diff tool with spaces in the path

This fixes the launching of external diff to handle a diff tool that has spaces in the path. This ensures a correctly formed tcl list is passed to the open command with a single pipe character prefixing the list (as per the tcl manual page for open). The specific fault observed was that selecting WinMerge as the diff tool from the default installed location in Program Files failed to be launched from the context menu. Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> Signed-off-by: Paul Mackerras <paulus@samba.org>

Pat Thoyts committed Apr 15, 2009 at 16:54 UTC b575b2f1f420bf82557beab0f4ec12e5aa832bea
1 file changed +2 -3
gitk
+2 -3
@@ -3245,9 +3245,8 @@ proc external_diff {} {
3245 set difftofile [external_diff_get_one_file $diffidto $flist_menu_file $diffdir]
3246
3247 if {$difffromfile ne {} && $difftofile ne {}} {
3248 - set cmd [concat | [shellsplit $extdifftool] \
3249 - [list $difffromfile $difftofile]]
3250 - if {[catch {set fl [open $cmd r]} err]} {
3248 + set cmd [list [shellsplit $extdifftool] $difffromfile $difftofile]
3249 + if {[catch {set fl [open |$cmd r]} err]} {
3250 file delete -force $diffdir
3251 error_popup "$extdifftool: [mc "command failed:"] $err"
3252 } else {