cache.h: move remote/connect API out of it
[gitweb.git] / git-web--browse.sh
index c108eefb4810e1167f28a563b02895266da3098f..1d72ec760e9d69e0fc29a699fa60be945f872a93 100755 (executable)
@@ -31,8 +31,10 @@ valid_custom_tool()
 
 valid_tool() {
        case "$1" in
-       firefox | iceweasel | seamonkey | iceape | chrome | google-chrome | chromium | \
-       konqueror | opera | w3m | elinks | links | lynx | dillo | open | start)
+       firefox | iceweasel | seamonkey | iceape | \
+       chrome | google-chrome | chromium | chromium-browser | \
+       konqueror | opera | w3m | elinks | links | lynx | dillo | open | \
+       start | cygstart)
                ;; # happy
        *)
                valid_custom_tool "$1" || return 1
@@ -42,7 +44,13 @@ valid_tool() {
 
 init_browser_path() {
        browser_path=$(git config "browser.$1.path")
-       test -z "$browser_path" && browser_path="$1"
+       if test -z "$browser_path" &&
+          test "$1" = chromium &&
+          type chromium-browser >/dev/null 2>&1
+       then
+               browser_path=chromium-browser
+       fi
+       : ${browser_path:="$1"}
 }
 
 while test $# != 0
@@ -104,7 +112,7 @@ fi
 
 if test -z "$browser" ; then
        if test -n "$DISPLAY"; then
-               browser_candidates="firefox iceweasel google-chrome chrome chromium konqueror opera seamonkey iceape w3m elinks links lynx dillo"
+               browser_candidates="firefox iceweasel google-chrome chrome chromium chromium-browser konqueror opera seamonkey iceape w3m elinks links lynx dillo"
                if test "$KDE_FULL_SESSION" = "true"; then
                        browser_candidates="konqueror $browser_candidates"
                fi
@@ -112,14 +120,18 @@ if test -z "$browser" ; then
                browser_candidates="w3m elinks links lynx"
        fi
        # SECURITYSESSIONID indicates an OS X GUI login session
-       if test -n "$SECURITYSESSIONID" \
-               -o "$TERM_PROGRAM" = "Apple_Terminal" ; then
+       if test -n "$SECURITYSESSIONID" || test -n "$TERM_PROGRAM"
+       then
                browser_candidates="open $browser_candidates"
        fi
        # /bin/start indicates MinGW
        if test -x /bin/start; then
                browser_candidates="start $browser_candidates"
        fi
+       # /usr/bin/cygstart indicates Cygwin
+       if test -x /usr/bin/cygstart; then
+               browser_candidates="cygstart $browser_candidates"
+       fi
 
        for i in $browser_candidates; do
                init_browser_path $i
@@ -147,10 +159,9 @@ firefox|iceweasel|seamonkey|iceape)
        test "$vers" -lt 2 && NEWTAB=''
        "$browser_path" $NEWTAB "$@" &
        ;;
-google-chrome|chrome|chromium)
-       # Actual command for chromium is chromium-browser.
+google-chrome|chrome|chromium|chromium-browser)
        # No need to specify newTab. It's default in chromium
-       eval "$browser_path" "$@" &
+       "$browser_path" "$@" &
        ;;
 konqueror)
        case "$(basename "$browser_path")" in
@@ -158,18 +169,18 @@ konqueror)
                # It's simpler to use kfmclient to open a new tab in konqueror.
                browser_path="$(echo "$browser_path" | sed -e 's/konqueror$/kfmclient/')"
                type "$browser_path" > /dev/null 2>&1 || die "No '$browser_path' found."
-               eval "$browser_path" newTab "$@"
+               "$browser_path" newTab "$@" &
                ;;
        kfmclient)
-               eval "$browser_path" newTab "$@"
+               "$browser_path" newTab "$@" &
                ;;
        *)
                "$browser_path" "$@" &
                ;;
        esac
        ;;
-w3m|elinks|links|lynx|open)
-       eval "$browser_path" "$@"
+w3m|elinks|links|lynx|open|cygstart)
+       "$browser_path" "$@"
        ;;
 start)
        exec "$browser_path" '"web-browse"' "$@"
@@ -179,7 +190,7 @@ opera|dillo)
        ;;
 *)
        if test -n "$browser_cmd"; then
-               ( eval $browser_cmd "$@" )
+               ( eval "$browser_cmd \"\$@\"" )
        fi
        ;;
 esac