diff options
| author | Mark Levedahl <mlevedahl@gmail.com> | 2025-03-31 23:01:02 -0400 |
|---|---|---|
| committer | Johannes Sixt <j6t@kdbg.org> | 2025-04-01 18:13:04 +0200 |
| commit | 16c03089e617ef492427a567d3da7cb8ff28cedd (patch) | |
| tree | 900efb3c5a33c8c140e0a1fb47af138921330f2e | |
| parent | gitk: _search_exe is no longer needed (diff) | |
| download | git-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-x | gitk | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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" |
