diff options
Diffstat (limited to 'git-gui.sh')
| -rwxr-xr-x | git-gui.sh | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/git-gui.sh b/git-gui.sh index 570c236f57..9ccd888930 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -88,10 +88,22 @@ proc _which {what args} { set gitguidir [file dirname [info script]] regsub -all ";" $gitguidir "\\;" gitguidir set env(PATH) "$gitguidir;$env(PATH)" - set _search_path [split $env(PATH) {;}] - # Skip empty `PATH` elements - set _search_path [lsearch -all -inline -not -exact \ - $_search_path ""] + + set _path_seen [dict create] + foreach p [split $env(PATH) {;}] { + # Keep only absolute paths, getting rid of ., empty, etc. + if {[file pathtype $p] ne {absolute}} { + continue + } + # Keep only the first occurence of any duplicates. + set norm_p [file normalize $p] + if {[dict exists $_path_seen $norm_p]} { + continue + } + dict set _path_seen $norm_p 1 + lappend _search_path $norm_p + } + unset _path_seen set _search_exe .exe } else { set _search_path [split $env(PATH) :] |
