diff_cmd () {
	"$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
	return 0
}

merge_cmd () {
	# mergetool.winmerge.trustExitCode is implicitly false.
	# touch $BACKUP so that we can check_unchanged.
	touch "$BACKUP"
	"$merge_tool_path" -u -e -dl Local -dr Remote \
		"$LOCAL" "$REMOTE" "$MERGED"
	check_unchanged
}

translate_merge_tool_path() {
	# Use WinMergeU.exe if it exists in $PATH
	if type -p WinMergeU.exe >/dev/null 2>&1
	then
		printf WinMergeU.exe
		return
	fi

	# Look for WinMergeU.exe in the typical locations
	winmerge_exe="WinMerge/WinMergeU.exe"
	for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
		cut -d '=' -f 2- | sort -u)
	do
		if test -n "$directory" && test -x "$directory/$winmerge_exe"
		then
			printf '%s' "$directory/$winmerge_exe"
			return
		fi
	done

	printf WinMergeU.exe
}
