#!/bin/sh # # The contents of this file are subject to the Netscape Public License # Version 1.0 (the "NPL"); you may not use this file except in # compliance with the NPL. You may obtain a copy of the NPL at # http://www.mozilla.org/NPL/ # # Software distributed under the NPL is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL # for the specific language governing rights and limitations under the # NPL. # # The Initial Developer of this code under the NPL is Netscape # Communications Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All Rights # Reserved. # ## $Id: mozilla.in,v 1.6 2004/02/20 18:13:46 pkw%us.ibm.com Exp $ ## ## Usage: ## ## $ mozilla [args] ## ## This script is meant to run the mozilla-bin binary from either ## mozilla/xpfe/bootstrap or mozilla/dist/bin. ## ## The script will setup all the environment voodoo needed to make ## the mozilla-bin binary to work. ## # # MOZ_PIS, "Mozilla Plugable Init Scripts" # MOZ_PIS_ is the name space used # These variables and there meaning are specified in # mozilla/xpfe/bootstrap/init.d/README moz_pis_startstop_scripts() { MOZ_PIS_API=2 MOZ_PIS_MOZBINDIR="${dist_bin}" MOZ_PIS_SESSION_PID="$$" MOZ_PIS_USER_DIR="${MOZ_USER_DIR}" export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR case "${1}" in "start") for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/S* \ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/S*; do if [ -x "${curr_pis}" ]; then case "${curr_pis}" in *.sh) . "${curr_pis}" ;; *) ${curr_pis} "start" ;; esac fi done ;; "stop") for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/K* \ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/K*; do if [ -x "${curr_pis}" ]; then case "${curr_pis}" in *.sh) . "${curr_pis}" ;; *) ${curr_pis} "stop" ;; esac fi done ;; *) echo "$0: Internal error in moz_pis_startstop_scripts." 1>&2 exit 1 ;; esac } #uncomment for debugging #set -x # # variables # location="new-tab" #MOZILLA_UILOCALE="en-US" #MOZILLA_UIREGION="US" # # working definitions # MOZ_USER_DIR=".mozilla" moz_libdir="/usr/X11R6/lib/mozilla" MRE_HOME="/usr/X11R6/lib/mre/mre-1.7.7" debugging= # set the debugging level use_openFile="yes" # use openFile() for file/dir here=`pwd` if [ ! -d "${MRE_HOME}" ]; then # use moz_libdir as MRE_HOME MRE_HOME="${moz_libdir}" fi export MRE_HOME # Use run-mozilla.sh in the current dir if it exists # If not, then start resolving symlinks until we find run-mozilla.sh found=0 progname="$0" curdir=`dirname "$progname"` progbase=`basename "$progname"` run_moz="$curdir/run-mozilla.sh" # mozilla must obey MOZILLA_FIVE_HOME if [ -n "$MOZILLA_FIVE_HOME" -a -d "$MOZILLA_FIVE_HOME" -a \ -x "$MOZILLA_FIVE_HOME/run-mozilla.sh" ]; then curdir="$MOZILLA_FIVE_HOME" run_moz="$curdir/run-mozilla.sh" dist_bin="$curdir" found=1 elif [ -x "$run_moz" ]; then dist_bin="$curdir" found=1 else while [ -h "${progname}" ]; do bn=`basename "${progname}"` cd `dirname "${progname}"` progname=`ls -l "${bn}" | sed -e 's/^.* -> //'` if [ ! -x "$progname" ]; then break fi curdir=`dirname "${progname}"` run_moz="${curdir}/run-mozilla.sh" if [ -x "${run_moz}" ]; then cd "$curdir" dist_bin=`pwd` run_moz="${dist_bin}/run-mozilla.sh" found=1 break fi done cd "${here}" fi if [ $found = 0 ]; then # Check default compile-time libdir if [ -x "${moz_libdir}/run-mozilla.sh" ]; then dist_bin="$moz_libdir" run_moz="${dist_bin}/run-mozilla.sh" else echo "$0: Cannot find mozilla runtime directory. Exiting." 1>&2 exit 1 fi fi MOZILLA_BIN="${progbase}-bin" if [ "$OSTYPE" = "beos" ]; then mimeset -F "$MOZILLA_BIN" fi # test for binary apps in ${dist_bin} if [ -x "${dist_bin}/${MOZILLA_BIN}" ]; then MOZILLA_BIN="${dist_bin}/${progbase}-bin" else echo "$0: Cannot find mozilla binary executable. Exiting." 1>&2 exit 1 fi if [ -x "${dist_bin}/mozilla-xremote-client" ]; then MOZ_CLIENT_PROGRAM="${dist_bin}/mozilla-xremote-client -a ${progbase}" else MOZ_CLIENT_PROGRAM="${MOZILLA_BIN} -remote -a ${progbase}" fi # guest a default remote command _remote_cmd="xfeDoCommand(openBrowser)" # parse options script_args= # null moreargs= # null target= # null ALREADY_RUNNING="test" if [ -x /etc/lang.sh ]; then . /etc/lang.sh uilocale=`echo $LANG | cut -d. -f 1 | sed 's/_/-/g'` fi while [ $# -gt 0 ] do if [ -n "${target}" ]; then # well, this can't be the target if not last moreargs="${moreargs} \"${target}\"" target= # null fi case "$1" in # preserve [pP] for profile --pure | -pure) MOZILLA_BIN="${MOZILLA_BIN}.pure" shift ;; -g | --debug) script_args="${script_args} -g" debugging=1 shift ;; -d | --debugger) if [ -n "$2" ]; then script_args="${script_args} -d $2" shift 2 else "$0: ERROR, $1 needs an argument. Exiting" 1>&2 exit 1 fi ;; -[Uu][Ii][Ll]ocale) if [ -n "$2" ]; then uilocale="$2" shift 2 else echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2 exit 1 fi ;; -[Uu][Ii][Rr]egion) if [ -n "$2" ]; then uiregion="$2" shift 2 else echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2 exit 1 fi ;; -browser) # browser is default for mozilla shift ;; -mail) _remote_cmd="xfeDoCommand(openInbox)" moreargs="${moreargs} $1" shift ;; -compose) _remote_cmd="xfeDoCommand(composeMessage)" moreargs="${moreargs} $1" shift ;; -turbo | -nosplash | -quiet) # use remote even with this moreargs="${moreargs} $1" shift ;; -*) # don't use remote with options ALREADY_RUNNING= # null moreargs="${moreargs} $1" shift ;; *) target="$1" shift ;; esac done # test for a running copy of firefox # seems this is not needed #if [-n "${ALREADY_RUNNING}" ]; then # if [ -n "${DISPLAY}" ]; then # if [ -n "${debugging}" ]; then # echo "${run_moz} ${MOZ_CLIENT_PROGRAM} ping()" # ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' && ALREADY_RUNNING="yes" # else # ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' >/dev/null 2>&1 && # ALREADY_RUNNING="yes" # fi # elif [ -n "${debugging}" ]; then # echo "$0: WARN, no DISPLAY environment" 1>&2 # fi #fi # process target if [ -n "${target}" ]; then moreargs="${moreargs} \"${target}\"" if [ -n "${ALREADY_RUNNING}" ]; then if [ `expr "${target}" : '.*:.*'` -eq 0 ]; then if [ `expr "${target}" : '/.*'` -eq 0 ]; then target="${here}/${target}" fi if [ -r "${target}" -o -d "${target}" ]; then [ -n "${use_openFile}" ] || target="file://${target}" else echo "$0: WARN, target: ${target} not an URI/file/dir" 1>&2 ALREADY_RUNNING= # null fi else # an former URI, don't use openFile use_openFile= # null fi fi fi # try remote protocol if running if [ -n "${ALREADY_RUNNING}" ]; then if [ -n "${target}" ]; then if [ -n "${use_openFile}" ]; then _remote_cmd="openFile(${target})" elif [ -n "${location}" ]; then _remote_cmd="openURL(${target},${location})" else _remote_cmd="openURL(${target})" fi fi # FIXME problems with freedesktop StartupNotify if [ -n "${debugging}" ]; then echo "${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd}" ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} && exit 0 else ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} \ >/dev/null 2>&1 && exit 0 fi fi # fallback to direct invocation # UILocale, UIRegion if [ -z "${uilocale}" -a -n "${MOZILLA_UILOCALE}" ]; then uilocale="${MOZILLA_UILOCALE}" fi if [ -z "${uiregion}" -a -n "${MOZILLA_UIREGION}" ]; then uiregion="${MOZILLA_UIREGION}" fi if [ -n "${uiregion}" -a -z "${uilocale}" ]; then uilocale="en-US" fi if [ -n "${uilocale}" ]; then if [ -n "${uiregion}" ]; then moreargs="-UIRegion ${uiregion} ${moreargs}" fi moreargs="-UILocale ${uilocale} ${moreargs}" fi # real invocation eval "set -- ${moreargs}" ## Start addon scripts moz_pis_startstop_scripts "start" if [ -n "${debugging}" ]; then echo "${run_moz} ${script_args} ${MOZILLA_BIN} $@" fi ${run_moz} ${script_args} ${MOZILLA_BIN} "$@" exitcode=$? ## Stop addon scripts moz_pis_startstop_scripts "stop" exit $exitcode # EOF.