aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Levedahl <mlevedahl@gmail.com>2025-03-31 23:01:02 -0400
committerJohannes Sixt <j6t@kdbg.org>2025-04-01 18:13:04 +0200
commit16c03089e617ef492427a567d3da7cb8ff28cedd (patch)
tree900efb3c5a33c8c140e0a1fb47af138921330f2e
parentgitk: _search_exe is no longer needed (diff)
downloadgit-16c03089e617ef492427a567d3da7cb8ff28cedd.tar.gz
git-16c03089e617ef492427a567d3da7cb8ff28cedd.zip
gitk: limit PATH search to bare executable names
The path search overrides used by gitk on Windows are applied to any executable whose name is not 'absolute', meaning that [exec foo/bar ...] will search each element of $PATH to find one with subdirectory foo containing bar. But, per POSIX, and Tcl implementation on all platforms, foo/bar is taken as $(pwd)/foo/bar, and is not searched on $PATH. Fix this descrepency using the same approach applied to git-gui in commit 3f71c97e. The key is that the executable name must have no path component, indicated by [file split $exename] having array length 1. Signed-off-by: Mark Levedahl <mlevedahl@gmail.com> Signed-off-by: Johannes Sixt <j6t@kdbg.org>
-rwxr-xr-xgitk2
1 files changed, 1 insertions, 1 deletions
diff --git a/gitk b/gitk
index 899b51ca55..11ad639d06 100755
--- a/gitk
+++ b/gitk
@@ -58,7 +58,7 @@ if {[is_Windows]} {
set i $from_index
while {$i < [llength $command_line]} {
set cmd [lindex $command_line $i]
- if {[file pathtype $cmd] ne "absolute"} {
+ if {[llength [file split $cmd]] < 2} {
set fullpath [_which $cmd]
if {$fullpath eq ""} {
throw {NOT-FOUND} "$cmd not found in PATH"