diff options
Diffstat (limited to 'firefox.sh.in')
-rw-r--r-- | firefox.sh.in | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/firefox.sh.in b/firefox.sh.in new file mode 100644 index 0000000..96e2e9d --- /dev/null +++ b/firefox.sh.in @@ -0,0 +1,227 @@ +#!/bin/sh +# +# The contents of this file are subject to the Netscape Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/NPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): +# + +## +## Usage: +## +## $ mozilla +## +## This script is meant to run a mozilla program from the mozilla +## rpm installation. +## +## The script will setup all the environment voodoo needed to make +## mozilla work. + +cmdname=`basename $0` + +## +## Variables +## +MOZ_DIST_BIN="FFDIR" +MOZ_PROGRAM="$MOZ_DIST_BIN/firefox" +MOZ_CLIENT_PROGRAM="$MOZ_DIST_BIN/mozilla-xremote-client" +MOZ_CLIENT_PROGRAM_PARAM="-a firefox" + +## +## Set MOZILLA_FIVE_HOME +## +MOZILLA_FIVE_HOME="$MOZ_DIST_BIN" + +export MOZILLA_FIVE_HOME + +## +## Set LD_LIBRARY_PATH +## +if [ "$LD_LIBRARY_PATH" ] +then + LD_LIBRARY_PATH=$MOZ_DIST_BIN:$MOZ_DIST_BIN/plugins:$LD_LIBRARY_PATH +else + LD_LIBRARY_PATH=$MOZ_DIST_BIN:$MOZ_DIST_BIN +fi + +export LD_LIBRARY_PATH + +## +## Make sure that we set the plugin path for backwards compatibility +## +if [ "$MOZ_PLUGIN_PATH" ] +then + MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:LIBDIR/mozilla/plugins:$MOZ_DIST_BIN/plugins +else + MOZ_PLUGIN_PATH=LIBDIR/mozilla/plugins:$MOZ_DIST_BIN/plugins +fi +export MOZ_PLUGIN_PATH + +## +## Set FONTCONFIG_PATH for Xft/fontconfig +## +FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft" +export FONTCONFIG_PATH + +# Figure out if we need to ser LD_ASSUME_KERNEL for older versions of the JVM. + +function set_jvm_vars() { + + # see if the jvm exists in either of the locations + if [ -L $MOZ_DIST_BIN/plugins/libjavaplugin_oji.so ]; then + JVM_ORIG_LINK=$MOZ_DIST_BIN/plugins/libjavaplugin_oji.so + fi + + if [ -L LIBDIR/mozilla/plugins/libjavaplugin_oji.so ]; then + JVM_ORIG_LINK=LIBDIR/mozilla/plugins/libjavaplugin_oji.so + fi + + if [ -z "$JVM_ORIG_LINK" ]; then + return; + fi + + JVM_LINK=`perl -e "print readlink('$JVM_ORIG_LINK')"` + + # is it relative? if so append the full path + + echo "${JVM_LINK}" | grep -e "^/" 2>&1 > /dev/null + + if [ "$?" -ne "0" ]; then + JVM_LINK=$MOZ_DIST_BIN/plugins/${JVM_LINK} + fi + + JVM_BASE=`basename $JVM_LINK` + JVM_DIR=`echo $JVM_LINK | sed -e s/$JVM_BASE//g` + JVM_COMMAND=$JVM_DIR/java + if [ ! -r $JVM_COMMAND ]; then + JVM_DIR=${JVM_DIR}../../../bin/ + JVM_COMMAND=$JVM_DIR/java + # does the command exist? + if [ ! -r "$JVM_COMMAND" ]; then + return + fi + fi + + # export this temporarily - it seems to work with old and new + # versions of the JVM. + export LD_ASSUME_KERNEL=2.2.5 + + # get the version + JVM_VERSION=`$JVM_COMMAND -version 2>&1 | grep version | cut -f 3 -d " " | sed -e 's/\"//g'` + + unset LD_ASSUME_KERNEL + + case "$JVM_VERSION" in + (1.3.0*) + # bad JVM + export LD_ASSUME_KERNEL=2.2.5 + ;; + esac +} + +function check_running() { + $MOZ_CLIENT_PROGRAM $MOZ_CLIENT_PROGRAM_PARAM 'ping()' 2>/dev/null >/dev/null + RETURN_VAL=$? + if [ "$RETURN_VAL" -eq "2" ]; then + echo 0 + return 0 + else + echo 1 + return 1 + fi +} + +function open_mail() { + if [ "${ALREADY_RUNNING}" -eq "1" ]; then + exec $MOZ_CLIENT_PROGRAM $MOZ_CLIENT_PROGRAM_PARAM 'xfeDoCommand(openInbox)' \ + 2>/dev/null >/dev/null + else + exec $MOZ_PROGRAM $* + fi +} + +function open_compose() { + if [ "${ALREADY_RUNNING}" -eq "1" ]; then + exec $MOZ_CLIENT_PROGRAM $MOZ_CLIENT_PROGRAM_PARAM 'xfeDoCommand(composeMessage)' \ + 2>/dev/null >/dev/null + else + exec $MOZ_PROGRAM $* + fi +} + +# OK, here's where all the real work gets done + +# set our JVM vars +set_jvm_vars + +# check to see if there's an already running instance or not +ALREADY_RUNNING=`check_running` + +# If there is no command line argument at all then try to open a new +# window in an already running instance. +if [ "${ALREADY_RUNNING}" -eq "1" ] && [ -z "$1" ]; then + exec $MOZ_CLIENT_PROGRAM $MOZ_CLIENT_PROGRAM_PARAM "xfeDoCommand(openBrowser)" 2>/dev/null>/dev/null +fi + +# check system locale +MOZARGS= +MOZLOCALE=`echo $LANG | sed "s|_\([^.]*\).*|-\1|g"` +[ -f $MOZILLA_FIVE_HOME/chrome/$MOZLOCALE.jar ] && MOZARGS="-UILocale $MOZLOCALE" + + +# if there's no command line argument and there's not a running +# instance then just fire up a new copy of the browser +if [ -z "$1" ]; then + exec $MOZ_PROGRAM $MOZARGS 2>/dev/null >/dev/null +fi + +unset RETURN_VAL + +# If there's a command line argument but it doesn't begin with a - +# it's probably a url. Try to send it to a running instance. + +USE_EXIST=0 +opt="$1" +case "$opt" in + -mail) + open_mail ${1+"$@"} + ;; + -compose) + open_compose ${1+"$@"} + ;; + -*) ;; + *) USE_EXIST=1 ;; +esac + +if [ "${USE_EXIST}" -eq "1" ] && [ "${ALREADY_RUNNING}" -eq "1" ]; then + # check to make sure that the command contains at least a :/ in it. + echo $opt | grep -e ':/' 2>/dev/null > /dev/null + RETURN_VAL=$? + if [ "$RETURN_VAL" -eq "1" ]; then + # if it doesn't begin with a '/' and it exists when the pwd is + # prepended to it then append the full path + echo $opt | grep -e '^/' 2>/dev/null > /dev/null + if [ "${RETURN_VAL}" -ne "0" ] && [ -e `pwd`/$opt ]; then + opt="`pwd`/$opt" + fi + exec $MOZ_CLIENT_PROGRAM $MOZ_CLIENT_PROGRAM_PARAM "openurl($opt)" 2>/dev/null >/dev/null + fi + # just pass it off if it looks like a url + exec $MOZ_CLIENT_PROGRAM $MOZ_CLIENT_PROGRAM_PARAM "openurl($opt,new-window)" 2>/dev/null >/dev/null +fi + +exec $MOZ_PROGRAM $MOZARGS ${1+"$@"} |