X-Git-Url: http://git.osdn.net/view?p=pizza-ipa-oss%2Fjre.git;a=blobdiff_plain;f=features%2Fjp.pizzafactory.com.sun.jre%2Frootfiles.linux.x86%2Fjre%2Fbin%2Fjcontrol;fp=features%2Fjp.pizzafactory.com.sun.jre%2Frootfiles.linux.x86%2Fjre%2Fbin%2Fjcontrol;h=41273ea3293f4eb3dadb7719f9c2ce40b604f66e;hp=0000000000000000000000000000000000000000;hb=380406f21bee95a4d2cde5028f7b9cba0239aebe;hpb=222171335eade95b7723df3619eb09ab0e0d927e diff --git a/features/jp.pizzafactory.com.sun.jre/rootfiles.linux.x86/jre/bin/jcontrol b/features/jp.pizzafactory.com.sun.jre/rootfiles.linux.x86/jre/bin/jcontrol new file mode 100644 index 0000000..41273ea --- /dev/null +++ b/features/jp.pizzafactory.com.sun.jre/rootfiles.linux.x86/jre/bin/jcontrol @@ -0,0 +1,243 @@ +#!/bin/bash +# +# %W% %E% +# +# Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. +# ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. +# +# Shell Script to run the Java(tm) Plug-in control panel. +# +# Parse the command-line options +# -r means make associate with the container (i.e browser) +# -u means remove the association with the container +# -c provides the location of the container install +# -j provides the location of the jre install +# if neither -r or -u are specified, run the ControlPanel UI + +USAGE='usage: ControlPanel [ (-u scheme | -r scheme) -c cpath -j jrepath ]' +JLERROR='ControlPanel: Error: Invalid JRE location: ' +CLERROR='ControlPanel: Error: Invalid container location: ' +IPERROR='ControlPanel: Error: Insufficient permission' +ISERROR='ControlPanel: Error: Invalid scheme: ' +XLERROR='ControlPanel: Error: Invalid link or copy: ' + +check_container_dir() { + + if [ ! -d ${1} ]; then + echo "${CLERROR}${2}" + exit 1 + fi + if [ ! -w ${1} ]; then + echo "${IPERROR}" + exit 1 + fi +} + +link_logic() { + if [ ${mode} = "reg" ]; then + ln -s ${1} ${2} + else + rm -f ${2} + fi +} + +# +# Get the absolute path to a symbolic link's reference. +# +# Parameters: +# $* : path - the path to the file (link) to dereference (can have spaces in +# the path). +# +# Output: +# This function writes the path to the link reference to stdout. +# +# Note: This function is not capable of detecting that one or more directories +# in the path is also a link and unravelling that. +# +dereference() { + path="$*" + result= + + # + # Make sure the path is absolute + # + parent="`cd \`dirname \"${path}\"\`; pwd`" + child="`basename \"${path}\"`" + + # + # if parent == child, then path == /, and is already absolute + # + if [ "${parent}" != "${child}" ]; then + path="${parent}/${child}" + fi + + if [ -h "${path}" ]; then + path=`ls -l "${path}" | sed -e "s#^.*${path} -> ##"` + + # make sure the path is still absolute (starts with '/') + if expr "${path}" : '[^/]' > /dev/null; then + path="${parent}/${path}" + fi + fi + + echo ${path} +} + +# +# Check for all the parts required to launch the control panel relative to the +# given path. +# +# +# Parameters: +# $* : path - the path to examine, presumably the resolved path to this +# script (can have spaces in the path). +# +# Output: +# If successful, this function outputs the absolute path to a directory +# containing the Java binary, and ../lib/deploy.jar; otherwise it outputs +# an empty string. (Output is to stdout.) +# +# Note: the assumption is that this function returns either: +# +# /jre/bin, or +# /bin +# +# However, as long as the directory pointed by the path returned by this +# function contains: +# +# ./java +# ../lib/deploy.jar +# +# it should be possible to successfully launch the JCP from the given +# information. +# +check_parts() { + result="`cd \`dirname \"$*\"\`; pwd`" + + # if this is a JDK, we need the JRE subdir + if [ -d "${result}/../jre/bin" ]; then + result="`cd \`dirname \"$*\"\`/../jre/bin; pwd`" + fi + + if [ ! -x "${result}/java" ] || [ ! -f "${result}/../lib/deploy.jar" ]; then + result= + fi + + echo ${result} +} + +# +# Launch the Java Control Panel. +# +# Parameters: +# $* : path - the path of this script (can have spaces in the path). +# +launch_jcp() { + path="$*" + while [ -h ${path} ]; do + path="`dereference ${path}`" + done + + java_home="`check_parts ${path}`" + if [ -n "${java_home}" ]; then + # launch the JCP using paths relative to + ${java_home}/java -Djavaplugin.user.profile=${USER_JPI_PROFILE} \ + -Xbootclasspath/a:${java_home}/../lib/deploy.jar \ + ${_JAVA_VM_OPTIONS} \ + com.sun.deploy.panel.ControlPanel + else + echo "${XLERROR}${java_home}" + exit 1 + fi +} + +# +# Manage the process of registering/unregistering the Java Plug-in with a given +# container (browser). +# +manage_container() { + # Do the "right" thing based on the provided scheme. + plugin_stem=${java_home}/plugin/${proc} + if [ ! -d ${plugin_stem} ]; then + echo "${JLERROR}${java_home}" + exit 1 + fi + + case ${scheme} in + ns4 | ns4E ) + plugin_location="${plugin_stem}/ns4" + if [ ${mode} = "reg" ]; then + echo "${plugin_location}" + fi + ;; + ns4L ) + plugin_location="${plugin_stem}/ns4" + filename=`ls ${plugin_location}` + container_target="${container_home}/plugins" + check_container_dir ${container_target} ${container_home} + link_logic ${plugin_location}/${filename} ${container_target}/${filename} + ;; + ns610 | ns610L ) + plugin_location="${plugin_stem}/ns610" + filename=`ls ${plugin_location}` + container_target="${container_home}/plugins" + check_container_dir ${container_target} ${container_home} + link_logic ${plugin_location}/${filename} ${container_target}/${filename} + ;; + * ) + echo ${ISERROR}${scheme} + exit 1 + esac +} + +while getopts ":r:u:c:j:" opt; do + case $opt in + r ) mode="reg";scheme=${OPTARG} + ;; + u ) mode="unreg";scheme=${OPTARG} + ;; + c ) container_home=${OPTARG} + ;; + j ) java_home=${OPTARG} + ;; + : ) echo ${USAGE} + exit 1 + ;; + \? ) echo ${USAGE} + exit 1 + ;; + esac +done + +os=`uname -s` +if [ "${os}" = "Linux" ]; then + case "`uname -m`" in + i[3-9]86 | ia32 | ia64 | x86_64) + proc=i386 + ;; + sparc*) + proc=sparc + ;; + *) + proc="`uname -m`" + ;; + esac +else + proc=`uname -p` +fi + +if [ -z "${scheme}" ] && + [ -z "${java_home}" ] && [ -z "${container_home}" ] +then + # just run the control panel + launch_jcp $0 +elif [ -n "${scheme}" ] && + [ -n "${java_home}" ] && [ -n "${container_home}" ] +then + # try to register/unregister the plugin + manage_container +else + # one or more missing args + echo ${USAGE} + exit 1 +fi