#!/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. VERSION=1.2 # Bug#122990 TERM=xterm export TERM cmdname=`basename $0` ## don't leave any core files around ulimit -c 0 ## ## Variables ## MOZ_DIST_BIN="/usr/lib/mozilla-firefox" MOZ_PROGRAM="/usr/lib/mozilla-firefox/firefox-bin" MOZ_CLIENT_PROGRAM="/usr/lib/mozilla-firefox/mozilla-firefox-xremote-client" LOCALES_DIR="/var/lib/mozilla-firefox/locales.d/" ## ## find /dev/dsp handler ## if [ -f $HOME/.mozilla-firefoxrc ]; then . $HOME/.mozilla-firefoxrc elif [ -f /etc/mozilla-firefox/mozilla-firefoxrc ]; then . /etc/mozilla-firefox/mozilla-firefoxrc fi if [ -z $FIREFOX_DSP ]; then FIREFOX_DSP="auto" fi if [ "$FIREFOX_DSP" = "auto" ]; then FIREFOX_DSP="" P=`fuser -m /dev/dsp /dev/sound/dsp 2>/dev/null | sed -e 's#[^0-9 ]##g' ` if [ -n "$P" ]; then if echo $P | xargs ps -p | grep esd >/dev/null 2>&1; then FIREFOX_DSP=esddsp; elif echo $P | xargs ps -p | grep arts >/dev/null 2>&1; then FIREFOX_DSP=artsdsp; fi fi elif [ "$FIREFOX_DSP" = "none" ];then FIREFOX_DSP="" fi if type $FIREFOX_DSP > /dev/null 2>&1; then # echo "Using $FIREFOX_DSP." MOZ_PROGRAM="$FIREFOX_DSP $MOZ_PROGRAM" fi ## ## Set MOZILLA_FIVE_HOME ## MOZILLA_FIVE_HOME="/usr/lib/mozilla-firefox" export MOZILLA_FIVE_HOME ## ## Set LD_LIBRARY_PATH ## if [ "$LD_LIBRARY_PATH" ] then LD_LIBRARY_PATH=/usr/lib/mozilla-firefox:/usr/lib/mozilla-firefox/plugins:/usr/lib/mozilla/plugins:/usr/lib:$LD_LIBRARY_PATH else LD_LIBRARY_PATH=/usr/lib/mozilla-firefox:/usr/lib/mozilla-firefox/plugins:/usr/lib/mozilla/plugins:/usr/lib fi export LD_LIBRARY_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. set_jvm_vars () { if [ ! -L /usr/lib/mozilla/plugins/libjavaplugin_oji.so ]; then return; fi JVM_LINK=`perl -e 'print readlink("/usr/lib/mozilla/plugins/libjavaplugin_oji.so")'` # is it relative? if so append the full path echo "${JVM_LINK}" | grep -e "^/" 2>&1 > /dev/null if [ "$?" -ne "0" ]; then JVM_LINK=/usr/lib/mozilla/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 } check_running () { $MOZ_CLIENT_PROGRAM 'ping()' 2>/dev/null >/dev/null RETURN_VAL=$? if [ "$RETURN_VAL" -eq "2" ]; then echo 0 return 0 else echo 1 return 1 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` # get the locale that best suits to the $LANG variable get_locale() { MOZLOCALE="" LOCALES=$(cat $LOCALES_DIR/* | sed -e "s/#.*$//" | grep -v ^$) DEFAULT_LOCALE=$(cat $LOCALES_DIR/* | sed -e "s/#.*$//" | grep -v ^$| head -n 1) # try all locales to match exactly for locale in $LOCALES; do # break if already set lang=$(expr "$locale" : "\(.*\):.*") COUNTRY=$(expr "$locale" : ".*\:\(.*\)") SYSLOCALE="$lang""_$COUNTRY" MATCHED=$(expr "$LANG" : ".*\($SYSLOCALE\).*") #echo matched: $MATCHED if test "x$MATCHED" != "x"; then MOZLOCALE="$lang-$COUNTRY" export MOZLOCALE fi if test "x$MOZLOCALE" != "x"; then break; fi done # match locales only with LANGUAGE for locale in $LOCALES; do if test "x$MOZLOCALE" != "x"; then break fi lang=$(expr "$locale" : "\(.*\):.*") COUNTRY=$(expr "$locale" : ".*\:\(.*\)") SYSLOCALE="$lang""_$COUNTRY" MATCHED=$(expr "$LANG" : "\($lang.*\)") #echo matched2: $MATCHED if test "x$MATCHED" != "x"; then MOZLOCALE="$lang-$COUNTRY" export MOZLOCALE fi done # set absolut default locale if test "x$MATCHED" = "x"; then lang=$(expr "$DEFAULT_LOCALE" : "\(.*\):.*") COUNTRY=$(expr "$DEFAULT_LOCALE" : ".*\:\(.*\)") MOZLOCALE="$lang-$COUNTRY" export MOZLOCALE fi echo selected locale: $MOZLOCALE LOCALE_ARGS="-contentLocale $MOZLOCALE -UILocale $MOZLOCALE" } clean_xul() { # Clean up the XUL.mfasl unconditionally on launch, since we have the # corner case of when firefox is running when upgraded. Need a # better solution or upstream fix. find $HOME/.firefox -name XUL.mfasl -print \ | xargs --no-run-if-empty rm -f } # 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 "xfeDoCommand(openBrowser)" 2>/dev/null >/dev/null fi # 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 clean_xul get_locale exec $MOZ_PROGRAM $LOCALE_ARGS >/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 open_in=window if [ "${FIREFOX_OPEN_IN}" = "tab" ] ; then open_in=tab fi 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 "openurl($opt,new-$open_in)" 2>/dev/null \ >/dev/null fi # just pass it off if it looks like a url exec $MOZ_CLIENT_PROGRAM "openurl($opt,new-$open_in)" 2>/dev/null >/dev/null fi clean_xul get_locale exec $MOZ_PROGRAM $LOCALE_ARGS ${1+"$@"}