| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- #!/bin/sh
- ##
- ## mozilla -- Mozilla Browser Startup Control Utility
- ## Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
- ## Copyright (c) 2000-2003 Ralf S. Engelschall <rse@engelschall.com>
- ## Copyright (c) 2000-2003 Cable & Wireless <http://www.cw.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
- LANG=en_US.ISO8859-1
- export LANG
- # 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://* | file://* ) ;;
- www.* ) url="http://$url" ;;
- ftp.* ) url="ftp://$url" ;;
- *.tar.gz | *.tgz ) url="ftpsearch:$url" ;;
- *" "* ) url="google:$url" ;;
- [0-9]* ) url="rfc:$url" ;;
- * ) url="leo:$url" ;;
- esac
- ;;
- esac
- case "$url" in
- http://* | https://* | ftp://* | file://* )
- : # 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"
- ;;
- rfc:* )
- # expand Zvon.org RFC query
- url=`echo "$url" | sed -e 's;^rfc:;;'`
- url="http://zvon.org/tmRFC/RFC$url/Output/index.html"
- ;;
- whois:* )
- # expand Geektools.com WHOIS query
- url=`echo "$url" | sed -e 's;^whois:;;'`
- url="http://www.geektools.com/cgi-bin/proxy.cgi?query=$url"
- ;;
- jargon:* )
- # expand UMEC Jargon File query
- url=`echo "$url" | sed -e 's;^jargon:;;' | tr ' ' '+'`
- url="http://www.tf.hut.fi/cgi-bin/jargon?search=$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"
- if [ ".$url" = ".about:blank" ]; then
- verbose "exec: $mozilla_bin >/dev/null 2>&1 &"
- $mozilla_bin >/dev/null 2>&1 &
- else
- verbose "exec: $mozilla_bin \"$url\" >/dev/null 2>&1 &"
- $mozilla_bin "$url" >/dev/null 2>&1 &
- fi
- 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
- if [ ".$url" = ".about:blank" ]; then
- cmd="xfeDoCommand(openBrowser)"
- else
- cmd="openURL($url, new-window)"
- fi
- 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
|