summaryrefslogtreecommitdiff
path: root/shell/source/unix/misc/open-url.sh
blob: 09a3496b1cad1d604d0d62d9a92f8385000441d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/sh

# tries to locate the executable specified
# as first parameter in the user's path.
which() {
  if [ ! -z "$1" ]; then
    for i in `echo $PATH | sed -e 's/^:/.:/g' -e 's/:$/:./g' -e 's/::/:.:/g' -e 's/:/ /g'`; do
      if [ -x "$i/$1" -a ! -d "$i/$1" ]; then
        echo "$i/$1"
        break;
      fi
    done
  fi
}

# checks for the original mozilla start script(s)
# and restrict the "-remote" semantics to those.
run_mozilla() {
  if file "$1" | grep "script" > /dev/null && grep "NPL" "$1" > /dev/null; then
    "$1" -remote 'ping()' 2>/dev/null >/dev/null
    if [ $? -eq 2 ]; then
      "$1" "$2" &
    else
      "$1" -remote "openURL($2, new-window)" &
    fi
  else
    "$1" "$2" &
  fi
}

# checks the browser value for a %s as defined in
# http://www.catb.org/~esr/BROWSER/index.html
run_browser() {
  echo "$1|$2" | awk '
{
    FS="|";
    $syscmd="";
    if (index($1,"%s") > 0) {
        $syscmd=sprintf($1,$2);
    } else {
        $syscmd=sprintf("%s \"%s\"",$1,$2);
    }
    system($syscmd " &");
}' > /dev/null
}

# restore search path for dynamic loader to system defaults to
# avoid version clashes of mozilla libraries shipped with OOo
case `uname -s` in
  AIX)
    LIBPATH=$SYSTEM_LIBPATH
    if [ -z "$LIBPATH" ]; then
        unset LIBPATH SYSTEM_LIBPATH
    else
        export LIBPATH; unset SYSTEM_LIBPATH
    fi
    ;;

  Darwin)
    DYLD_LIBRARY_PATH=$SYSTEM_DYLD_LIBRARY_PATH
    if [ -z "$DYLD_LIBRARY_PATH" ]; then
        unset DYLD_LIBRARY_PATH SYSTEM_DYLD_LIBRARY_PATH
    else
        export DYLD_LIBRARY_PATH; unset SYSTEM_DYLD_LIBRARY_PATH
    fi
    ;;

  HP-UX)
    SHLIB_PATH=$SYSTEM_SHLIB_PATH
    if [ -z "$SHLIB_PATH" ]; then
        unset SHLIB_PATH SYSTEM_SHLIB_PATH
    else
        export SHLIB_PATH; unset SYSTEM_SHLIB_PATH
    fi
    ;;

  IRIX*)
    LD_LIBRARYN32_PATH=$SYSTEM_LD_LIBRARYN32_PATH
    if [ -z "$LD_LIBRARYN32_PATH" ]; then
        unset LD_LIBRARYN32_PATH SYSTEM_LD_LIBRARYN32_PATH
    else
        export LD_LIBRARYN32_PATH; unset $SYSTEM_LD_LIBRARYN32_PATH
    fi
    ;;

  *)
    LD_LIBRARY_PATH=$SYSTEM_LD_LIBRARY_PATH
    if [ -z "$LD_LIBRARY_PATH" ]; then
        unset LD_LIBRARY_PATH SYSTEM_LD_LIBRARY_PATH
    else
        export LD_LIBRARY_PATH; unset SYSTEM_LD_LIBRARY_PATH
    fi
    ;;
esac

# special handling for mailto: uris
if echo $1 | grep '^mailto:' > /dev/null; then
  # check $MAILER variable
  if [ $MAILER ]; then
    $MAILER $1 &
    exit 0
  else
    # mozilla derivates may need -remote semantics
    for i in thunderbird mozilla netscape; do
      mailer=`which $i`
      if [ ! -z "$mailer" ]; then
        run_mozilla $mailer $1
        exit 0
      fi
    done
    # handle all non mozilla mail clients below
    # ..
  fi
else
  # check $BROWSER variable
  if [ $BROWSER ]; then
    $BROWSER $1 &
    exit 0
  else
    # mozilla derivates may need -remote semantics
    for i in firefox mozilla netscape; do
      browser=`which $i`
      if [ ! -z "$browser" ]; then
        run_mozilla $browser $1
        exit 0
      fi
    done
    # handle all non mozilla browers below
    # ..
  fi
fi
exit 1