|
|
@@ -1,3 +1,174 @@
|
|
|
#!/bin/sh
|
|
|
-cd @l_prefix@/lib/mozilla
|
|
|
-exec ./mozilla ${1+"$@"}
|
|
|
+##
|
|
|
+## mozilla -- Mozilla Browser Startup Control Utility
|
|
|
+## Copyright (c) 2000-2002 Cable & Wireless Deutschland GmbH
|
|
|
+## Copyright (c) 2000-2002 The OpenPKG Project <http://www.openpkg.org/>
|
|
|
+## Copyright (c) 2000-2002 Ralf S. Engelschall <rse@engelschall.com>
|
|
|
+##
|
|
|
+## Permission to use, copy, modify, and distribute this software for
|
|
|
+## any purpose with or without fee is hereby granted, provided that
|
|
|
+## the above copyright notice and this permission notice appear in all
|
|
|
+## copies.
|
|
|
+##
|
|
|
+## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
|
|
+## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
+## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
|
|
|
+## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
+## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
|
+## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
+## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
|
+## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
|
+## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
+## SUCH DAMAGE.
|
|
|
+##
|
|
|
+
|
|
|
+# configuration
|
|
|
+mozilla_dir="@l_prefix@/lib/mozilla"
|
|
|
+mozilla_bin="@l_prefix@/lib/mozilla/mozilla"
|
|
|
+xsel_bin="@l_prefix@/bin/xsel"
|
|
|
+
|
|
|
+# option parsing
|
|
|
+opt_v=no
|
|
|
+opt_w=no
|
|
|
+opt_t=no
|
|
|
+opt_r=""
|
|
|
+while [ ".$1" != . ]; do
|
|
|
+ case $1 in
|
|
|
+ -v|--verbose ) opt_v=yes; shift ;;
|
|
|
+ -w|--window ) opt_w=yes; shift ;;
|
|
|
+ -t|--tab ) opt_t=yes; shift ;;
|
|
|
+ -r|-remote|--remote ) opt_r="$2"; shift; shift ;;
|
|
|
+ -* ) echo "$0:ERROR: invalid option \"$1\"" 1>&2; exit 1 ;;
|
|
|
+ * ) break ;;
|
|
|
+ esac
|
|
|
+done
|
|
|
+if [ $# -eq 0 ]; then
|
|
|
+ set -- ""
|
|
|
+fi
|
|
|
+
|
|
|
+verbose () {
|
|
|
+ if [ ".$opt_v" = .yes ]; then
|
|
|
+ echo "mozilla: $*" 1>&2
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+# establish Mozilla environment
|
|
|
+MOZILLA_FIVE_HOME="$mozilla_dir"
|
|
|
+export MOZILLA_FIVE_HOME
|
|
|
+
|
|
|
+# special case of direct remote option
|
|
|
+if [ ".$opt_r" != . ]; then
|
|
|
+ verbose "exec: $mozilla_bin -remote \"$opt_r\""
|
|
|
+ exec $mozilla_bin -remote "$opt_r"
|
|
|
+fi
|
|
|
+
|
|
|
+# determine Mozilla run-time status
|
|
|
+$mozilla_bin -remote "ping()" >/dev/null 2>&1
|
|
|
+if [ $? -eq 0 ]; then
|
|
|
+ verbose "process already running (available remotely)"
|
|
|
+ restart=no
|
|
|
+else
|
|
|
+ verbose "process still not running (not available remotely)"
|
|
|
+ restart=yes
|
|
|
+fi
|
|
|
+
|
|
|
+# open one or more URLs
|
|
|
+first=yes
|
|
|
+for url in "$@"; do
|
|
|
+ # determine URL to open
|
|
|
+ if [ ".`echo .$url | grep '@'`" != . ]; then
|
|
|
+ # expand at-sign into X11 selection buffer
|
|
|
+ xsel=`($xsel_bin --paste) 2>/dev/null`
|
|
|
+ url=`echo "$url" | sed -e "s;@;$xsel;"`
|
|
|
+ fi
|
|
|
+ if [ ".$url" = . ]; then
|
|
|
+ # expand an empty URL into the internal blank page
|
|
|
+ url="about:blank"
|
|
|
+ else
|
|
|
+ # expand special URL constructs
|
|
|
+ case "$url" in
|
|
|
+ auto:* )
|
|
|
+ url=`echo "$url" | sed -e 's;^auto:;;'`
|
|
|
+ case "$url" in
|
|
|
+ http://* | https://* | ftp://* ) ;;
|
|
|
+ www.* ) url="http://$url" ;;
|
|
|
+ ftp.* ) url="ftp://$url" ;;
|
|
|
+ *.tar.gz | *.tgz ) url="ftpsearch:$url" ;;
|
|
|
+ *" "* ) url="google:$url" ;;
|
|
|
+ * ) url="leo:$url" ;;
|
|
|
+ esac
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ case "$url" in
|
|
|
+ http://* | https://* | ftp://* )
|
|
|
+ : # URL is already fully qualified
|
|
|
+ ;;
|
|
|
+ google:* )
|
|
|
+ # expand Google query
|
|
|
+ url=`echo "$url" | sed -e 's;^google:;;' | tr ' ' '+'`
|
|
|
+ url="http://www.google.com/search?q=$url"
|
|
|
+ ;;
|
|
|
+ leo:* )
|
|
|
+ # expand Leo Dictionary query
|
|
|
+ url=`echo "$url" | sed -e 's;^leo:;;' | tr ' ' '+'`
|
|
|
+ url="http://dict.leo.org/?search=$url"
|
|
|
+ ;;
|
|
|
+ ftpsearch:* )
|
|
|
+ # expand FTPSearch query
|
|
|
+ url=`echo "$url" | sed -e 's;^ftpsearch:;;' | sed -e 's; ;%20;g'`
|
|
|
+ url="http://www.alltheweb.com/search?advanced=1&cat=ftp&q=$url"
|
|
|
+ ;;
|
|
|
+ /* )
|
|
|
+ # expand absolute filename into file URL
|
|
|
+ url="file://$url"
|
|
|
+ ;;
|
|
|
+ * )
|
|
|
+ # expand relative filename into file URL
|
|
|
+ url="file://`pwd`/$url"
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ ".$first" = .yes -a ".$restart" = .yes ]; then
|
|
|
+ # handling of first URL if restarting is necessary
|
|
|
+ verbose "running new process"
|
|
|
+ verbose "exec: $mozilla_bin \"$url\" >/dev/null 2>&1 &"
|
|
|
+ $mozilla_bin "$url" >/dev/null 2>&1 &
|
|
|
+ else
|
|
|
+ # delayed waiting for process to be finally remotely available
|
|
|
+ # if it was started from scratch for the handling of the first
|
|
|
+ # URL. This way we wait only if necessary, i.e., if more than
|
|
|
+ # one URL was given.
|
|
|
+ if [ ".$first" = .no -a ".$restart" = .yes ]; then
|
|
|
+ verbose "waiting for new process to be available remotely"
|
|
|
+ sleep 4 # give it a little bit of time to fully startup
|
|
|
+ i=0
|
|
|
+ while [ $i -lt 10 ]; do
|
|
|
+ $mozilla_bin -remote "ping()" >/dev/null 2>&1
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ break
|
|
|
+ fi
|
|
|
+ sleep 1 # give it a little bit more time to startup
|
|
|
+ i=`expr $i + 1`
|
|
|
+ done
|
|
|
+ fi
|
|
|
+
|
|
|
+ # determine remote command
|
|
|
+ if [ ".$opt_w" = .yes ]; then
|
|
|
+ cmd="openURL($url, new-window)"
|
|
|
+ elif [ ".$opt_t" = .yes ]; then
|
|
|
+ cmd="openURL($url, new-tab)"
|
|
|
+ else
|
|
|
+ cmd="openURL($url)"
|
|
|
+ fi
|
|
|
+
|
|
|
+ # perform remote command
|
|
|
+ verbose "sending remote command to running process"
|
|
|
+ verbose "exec: $mozilla_bin -remote \"$cmd\" >/dev/null 2>&1"
|
|
|
+ $mozilla_bin -remote "$cmd" >/dev/null 2>&1
|
|
|
+ fi
|
|
|
+ first=no
|
|
|
+done
|
|
|
+
|