firefox 1.0.1 profiles

Jeremy Prior jez at netcraft.com
Mon Feb 28 02:20:14 GMT 2005


On Sun, 2005-02-27 at 18:39 -0500, Joe Marcus Clarke wrote:
> > The patch to fix this is trivial (but attached :-)
> 
> Please submit a diff against the port.  Thanks.

Attached.  This is the entire files/patch-browser_app_mozilla.in with
the -P patch included.

jez
-- 
      Jeremy Prior  <jez at netcraft.com>  http://www.netcraft.com/
 Netcraft Ltd, Treenwood Ho, Rowden La, Bradford-on-Avon, BA15 2AZ. UK
       Tel: +44-1225-867111 (switchboard)  Fax: +44-8700-517767
-------------- next part --------------
--- browser/app/mozilla.in.orig	Tue Oct 26 10:26:11 2004
+++ browser/app/mozilla.in	Mon Feb 28 02:14:53 2005
@@ -28,52 +28,110 @@
 ## The script will setup all the environment voodoo needed to make
 ## the mozilla-bin binary to work.
 ##
-
+#!/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.
+#
+
+# $from: mozilla.in,v 1.3.4.9 2004/10/26 09:26:11 bryner%brianryner.com Exp $
+# Usage:
+#
+# $ mozilla [args]
+#
+# 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_USER_DIR="%MOZ_USER_DIR%"
-  # MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts"
-  # These variables and there meaning are specified in
-  # mozilla/xpfe/bootstrap/init.d/README
-  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 "${dist_bin}/init.d"/S* "${HOME}/${MOZ_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 "${HOME}/${MOZ_USER_DIR}/init.d"/K* "${dist_bin}/init.d"/K* ; do
-        if [ -x "${curr_pis}" ] ; then
-          case "${curr_pis}" in
-            *.sh) . "${curr_pis}"        ;;
-            *)      "${curr_pis}" "stop" ;;
-          esac
-        fi
-      done
-      ;;
-    *)
-      echo 1>&2 "$0: Internal error in moz_pis_startstop_scripts."
-      exit 1
-      ;;
-  esac
+    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
+# uncomment for debugging
 #set -x
 
-moz_libdir=%MOZAPPDIR%
-MRE_HOME=%MREDIR%
+#
+# variables
+#
+#location="new-tab"
+#MOZILLA_UILOCALE="en-US"
+#MOZILLA_UIREGION="US"
+
+#
+# working definitions
+#
+MOZ_USER_DIR="%MOZ_USER_DIR%"
+moz_libdir="%MOZAPPDIR%"
+MRE_HOME="%MREDIR%"
+
+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
@@ -82,149 +140,233 @@
 curdir=`dirname "$progname"`
 progbase=`basename "$progname"`
 run_moz="$curdir/run-mozilla.sh"
-if test -x "$run_moz"; then
-  dist_bin="$curdir"
-  found=1
+if [ -x "$run_moz" ]; then
+    dist_bin="$curdir"
+    found=1
 else
-  here=`/bin/pwd`
-  while [ -h "$progname" ]; do
-    bn=`basename "$progname"`
-    cd `dirname "$progname"`
-    progname=`/bin/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"
+    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"
-  else 
-    echo "Cannot find mozilla runtime directory. Exiting."
-    exit 1
-  fi
+    # 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
 
-script_args=""
-moreargs=""
-debugging=0
 MOZILLA_BIN="${progbase}-bin"
+if [ "$OSTYPE" = "beos" ]; then
+    mimeset -F "$MOZILLA_BIN"
+fi
 
-# The following is to check for a currently running instance.
-# This is taken almost verbatim from the Mozilla RPM package's launch script.
-MOZ_CLIENT_PROGRAM="$dist_bin/mozilla-xremote-client"
-check_running() {
-    "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" 'ping()' 2>/dev/null >/dev/null
-    RETURN_VAL=$?
-    if [ $RETURN_VAL -eq 0 ]; then
-        echo 1
-        return 1
+# 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)"
+
+# test for a running copy of firefox
+ALREADY_RUNNING=	# null
+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
-        echo 0
-        return 0
+	${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' >/dev/null 2>&1 &&
+		ALREADY_RUNNING="yes"
     fi
-}
-
-if [ "$OSTYPE" = "beos" ]; then
-  mimeset -F "$MOZILLA_BIN"
+elif [ -n "${debugging}" ]; then
+    echo "$0: WARN, no DISPLAY environment" 1>&2
 fi
 
-ALREADY_RUNNING=`check_running`
-
-################################################################ Parse Arguments
-# 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
-_optOne="$1"
-case "${_optOne}" in
-	-*) 
-		;;
+# parse options
+script_args=	# null
+moreargs=	# null
+target=		# null
+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
+	-p | --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, -d needs an argument. Exiting" 1>&2
+		exit 1
+	    fi
+	    ;;
+	-UILocale)
+	    if [ -n "$2" ]; then
+		uilocale="$2"
+		shift 2
+	    else
+		echo "$0: ERROR, -UILocale needs an argument. Exiting" 1>&2
+		exit 1
+	    fi
+	    ;;
+	-UIRegion)
+	    if [ -n "$2" ]; then
+		uiregion="$2"
+		shift 2
+	    else
+		echo "$0: ERROR, -UIRegion needs an argument. Exiting" 1>&2
+		exit 1
+	    fi
+	    ;;
+	-browser)
+	    _remote_cmd="xfeDoCommand(openBrowser)"
+	    moreargs="${moreargs} $1"
+	    shift
+	    ;;
+	-mail)
+	    _remote_cmd="xfeDoCommand(openInbox)"
+	    moreargs="${moreargs} $1"
+	    shift
+	    ;;
+	-compose)
+	    _remote_cmd="xfeDoCommand(composeMessage)"
+	    moreargs="${moreargs} $1"
+	    shift
+	    ;;
+	-chat | -edit | -webcal)
+	    # don't use remote for this
+	    ALREADY_RUNNING=	# null
+	    moreargs="${moreargs} $1"
+	    shift
+	    ;;
+	-P)
+	    if [ -n "$2" ]; then
+		moreargs="${moreargs} $1 '$2'"
+		shift 2
+	    else
+		echo "$0: ERROR, -P needs an argument. Exiting" 1>&2
+		exit 1
+	    fi
+	    ;;
+	-*)
+	    moreargs="${moreargs} $1"
+	    shift
+	    ;;
 	*)
-		_USE_EXIST=1
-		;;
-esac
-
-_optLast=
-for i in "$@"; do 
-	_optLast="${i}"
-done #last arg
-
-if [ `expr "${_optLast}" : '.*:/.*'` -eq 0 -a \( -f "${_optLast}" -o -d "${_optLast}" \) ]; then
-	# Last argument seems to be a local file/directory
-	# Check, if it is absolutely specified (ie. /home/foo/file vs. ./file)
-	# If it is just "relatively" (./file) specified, make it absolutely
-	[ `expr "${_optLast}" : '/.*'` -eq 0 ] && _optLast="file://`pwd`/${_optLast}"
-fi
-################################################################ Parse Arguments
-
-########################################################################### Main
-if [ $ALREADY_RUNNING -eq 1 ]; then
-	# There's an instance already running. Use it.
-	# Any command line args passed in?
-	if [ $# -gt 0 ]; then
-		# There were "some" command line args.
-		if [ ${_USE_EXIST} -eq 1 ]; then
-			# We should use an existing instance, as _USE_EXIST=$_USE_EXIST=-1
-			_remote_cmd="openURL(${_optLast})"
-			"${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "${_remote_cmd}"
-			unset _remote_cmd
-			exit $?
-		fi
+	    target="$1"
+	    shift
+	    ;;
+    esac
+done
+
+# process target
+if [ -n "${target}" ]; 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
-		# No command line args. Open new window/tab
-		#exec "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
-		"${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
-		exit $?
+	    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
-# Default action - no running instance or _USE_EXIST (${_USE_EXIST}) ! -eq 1
-########################################################################### Main
 
-while [ $# -gt 0 ]
-do
-  case "$1" in
-    -p | --pure | -pure)
-      MOZILLA_BIN="${MOZILLA_BIN}.pure"
-      shift
-      ;;
-    -g | --debug)
-      script_args="$script_args -g"
-      debugging=1
-      shift
-      ;;
-    -d | --debugger)
-      script_args="$script_args -d $2"
-      shift 2
-      ;;
-    *)
-      moreargs="$moreargs \"$1\""
-      shift 1
-      ;;
-  esac
-done
+# 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}"
+    fi
+    ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} && exit 0
+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} ${more_args}"
+    fi
+    moreargs="-UILocale ${uilocale} ${more_args}"
+fi
 
-export MRE_HOME
-eval "set -- $moreargs"
+# real invocation
+if [ -n "${target}" ]; then
+    eval "set -- ${moreargs} \"${target}\""
+else
+    eval "set -- ${moreargs}"
+fi
 
 ## Start addon scripts
 moz_pis_startstop_scripts "start"
 
-if [ $debugging = 1 ]
-then
-  echo $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"
+if [ -n "${debugging}" ]; then
+    echo "${run_moz} ${script_args} ${MOZILLA_BIN} $@"
 fi
-"$dist_bin/run-mozilla.sh" $script_args "$dist_bin/$MOZILLA_BIN" "$@"
+${run_moz} ${script_args} ${MOZILLA_BIN} "$@"
 exitcode=$?
 
 ## Stop addon scripts


More information about the freebsd-gnome mailing list