Re: [PATCH v3] mergetools: add winmerge as a builtin tool
- From
Sebastian Schuberth <sschuberth@gmail.com>
- Date
- May 20, 2015, 07:11 UTC
- Message-ID
- <CAHGBnuOwf2cBMZf1A6HuSoVTPxCem7fH3TOCHnYg3tW-QkoOEg@mail.gmail.com>
- In-Reply-To
- <1432095635-96710-1-git-send-email-davvid@gmail.com>
On Wed, May 20, 2015 at 6:20 AM, David Aguilar <davvid@gmail.com> wrote:
> +translate_merge_tool_path() {
> + # Use WinMergeU.exe if it exists in $PATH
> + if type WinMergeU.exe >/dev/null 2>&1Maybe "type -p" here?
Show 13 quoted lines
> + # Look for WinMergeU.exe in the typical locations > + winmerge_exe="WinMerge/WinMergeU.exe" > + > + if test -n "$PROGRAMFILES" && test -x "$PROGRAMFILES (x86)/$winmerge_exe" > + then > + printf '%s' "$PROGRAMFILES (x86)/$winmerge_exe" > + elif test -n "$PROGRAMFILES" && test -x "$PROGRAMFILES/$winmerge_exe" > + then > + printf '%s' "$PROGRAMFILES/$winmerge_exe" > + else > + echo WinMergeU.exe > + fi > +}
This does not solve the problem reported by Dscho that some versions of Cygwin / MSYS 1 / MSYS 2 might export "$ProgramFiles" instead of "$PROGRAMFILES" (or similar for related variables).
Also there is a bit too much string duplication for my taste. And why use "echo" in some places and "printf" in others?
I still like a loop-based solution best:
IFS=$'\n'
for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
cut -d '=' -f 2- | sort -u)
do
test -n "$directory" &&
test -x "$directory/$winmerge_exe" &&
echo "$directory/$winmerge_exe" &&
break
done-- Sebastian Schuberth