#!/bin/sh
#
# Copyright 2000 Sun Microsystems, Inc. All rights reserved.
# Copyright 2000 Sun Microsystems, Inc. Tous droits rservs.
#
# This software is the proprietary information of Sun Microsystems, Inc.
# Use is subject to license terms.
#
# pragma ident "@(#)postinstall	1.22 00/07/25 Sun Microsystems"

#=================================================
# Used variables
#-------------------------------------------------
ARCH=`uname -p`
SHARED_LINK=$BASEDIR/java
SHARED_LOCATION=$BASEDIR/bin
SYS_CONTENTS_FILE_NAME=contents
DEV_TEST_BIT_FILE=bin/${ARCH}/native_threads/javac
SYS_CONTENTS=$PKG_INSTALL_ROOT/var/sadm/install/$SYS_CONTENTS_FILE_NAME
INSTALL_DIR="j2se"

#=================================================
# Check if slave or master
#-------------------------------------------------
CheckForSlave() {
  PKG_VERSION=`echo $VERSION | awk '{print substr($1, 0, 3);}'`
  if [ "X$PKG_VERSION" = "X1.1" ]; then
    INSTALL_DIR="java1.1"
  fi
  if [ "X$PKG_VERSION" = "X1.2" ]; then
    INSTALL_DIR="java1.2"
  fi
  if [ "X$PKG_VERSION" = "X1.3" ]; then
    INSTALL_DIR="j2se"
  fi
  OS=`uname -r`
  if [ -n "$DEFAULT" ]; then
    return 0
  fi
  case $OS in
    5.5.1 | 5.6 | 5.7 )
			if [ "$PKG_VERSION" = "1.1" ]; then
			  DEFAULT=TRUE;
			else
			  CheckIfDefault
			  if [ $? -ne 0   ]; then
			    DEFAULT=FALSE
			  else
			    DEFAULT=TRUE
			  fi
			fi			
			;;
                    5.8 )
                        if [ "$PKG_VERSION" = "1.2" ]; then
                          DEFAULT=TRUE;
                        else
                          CheckIfDefault
                          if [ $? -ne 0   ]; then
                            DEFAULT=FALSE
                          else
                            DEFAULT=TRUE
                          fi
                        fi  
                        ;;

                    * )
			if [ "$PKG_VERSION" = "1.3" ]; then
			  DEFAULT=TRUE;
			else
			  CheckIfDefault
			  if [ $? -ne 0   ]; then
			    DEFAULT=FALSE
			  else
			    DEFAULT=TRUE
			  fi
			fi			 
			;;
  esac
}
#=======================================================================
# Using the /usr/java= symlink in the /var/sadm/install/contents file,
# check to see which JDK is the default and install the other
# packages accordingly.  I.E, if 1.1 is installed as default, the
# other 1.1 packages should also be installed accordingly.
# $version version currently installed as default
# $PKG_VERSION version being installed
#-----------------------------------------------------------------------
CheckIfDefault() {
  sharLinkLastRec=`grep '^/usr/java=' $SYS_CONTENTS | awk '{ print $(NF)}'`
  if [ "X$sharLinkLastRec" != "X" ]; then
    if [ "X$PKG_INSTALL_ROOT" != "X" ]; then
      pInfoCommand="pkginfo -R $PKG_INSTALL_ROOT -l $sharLinkLastRec"
    else
      pInfoCommand="pkginfo -l $sharLinkLastRec"
    fi
    version=`$pInfoCommand | awk \
          '{ \
             if ($1 ~ /^VERSION:/) { print substr($2, 0, 3); exit;}\
           }'`
    if [ "X$version" = "X$PKG_VERSION" ]; then
      return 0;
    fi
    return 1;
  else
    if [ -h $PKG_INSTALL_ROOT/usr/java ]; then
      return 1;
    fi
    return 0;
  fi
}
#=================================================
# If we install 1.1, then install 1.1 links to /usr/bin
#-------------------------------------------------
InstallLinks() {
  if [ ! -d "$SHARED_LOCATION" ]; then
    installf -c none $PKGINST $SHARED_LOCATION d 0755 root bin
  else
    installf -c none $PKGINST $SHARED_LOCATION 
  fi
  if [ "$PKG_VERSION" = "1.1" ]; then
    if [ "$PKG" = "SUNWjvrt" ]; then
      links_strs="jar java javald jre rmiregistry appletviewer"
    else
      links_strs="javac javadoc javah java_g javap javaverify jdb \
                   native2ascii rmic serialver javakey"
    fi
  else
    if [ "$PKG" = "SUNWj2rt" ] || [ "$PKG" = "SUNWj3rt" ]; then
      links_strs="java keytool policytool rmid rmiregistry tnameserv"
    else
      links_strs="oldjava javac javah javald jarsigner \
                    jar javap appletviewer native2ascii rmic \
                    serialver jdb javadoc extcheck "
    fi
  fi
  for ln_str in $links_strs; do
    installf -c none $PKGINST "$SHARED_LOCATION/$ln_str=../java/bin/$ln_str" s
    installf -f  $PKGINST
    if [ ! -h $SHARED_LOCATION/$ln_str ]; then
      ln -s ../java/bin/$ln_str $SHARED_LOCATION/$ln_str
    fi
  done
}
#=================================================
# Get links from dir which are pointing to /usr/java/bin/...
# Var 'BITS' will bi changed
#-------------------------------------------------
GetBits() {
  BITS=`grep "^$1" $SYS_CONTENTS | grep /java/bin | \
   awk 'BEGIN{strout=""; } \
        { split($1,arr,"="); \
          if (index(arr[2],"/usr/java/bin") || index(arr[2],"../java/bin")) { \
            n=split(arr[2], a,"/"); \
	   strout=strout" "a[n]; \
          } \
        } \
        END{print strout}'`
}
#=================================================
# Check if string $2 is in the list $1
#-------------------------------------------------
InTheList() {
  for name in $2; do
    if [ "$1" = "$name" ]; then
      return 0
    fi
  done
  return 1
}

#=================================================
# Get installed 1.2 bits and create message file
#-------------------------------------------------
GetInstalledBits() {
  instBits=`grep "$LINKED_DIR/bin/.*=.java_wrapper" $SYS_CONTENTS | grep $PKGINST | \
                   awk '{split($1, ln,"="); n=split(ln[1], sl, "/"); print sl[n];}'`
  instBits=$instBits" "`grep "$LINKED_DIR/bin/.*=../jre/bin/.java_wrapper" $SYS_CONTENTS | grep $PKGINST | \
                   awk '{split($1, ln,"="); n=split(ln[1], sl, "/"); print sl[n];}'`
  GetBits $CLIENT_BASEDIR/bin
  if [ ! -d $FLINKED_DIR/bin ]; then
    installf -c none $PKGINST $FLINKED_DIR/bin d 0755 root bin
  fi
  for bit in $BITS; do
    InTheList $bit "$instBits"
    if [ $? -ne 0 ]; then
      file=$FLINKED_DIR/bin/$bit
      if [ -s $file ]; then
	continue
      fi
      rm -f $BASEDIR/bin/$bit
    fi
  done
}

#=================================================
# Move /usr/java link
#-------------------------------------------------
MoveLink() {
  LINKED_DIR=./$INSTALL_DIR
  FLINKED_DIR=$BASEDIR/$INSTALL_DIR
  GetInstalledBits
  InstallLinks
  if [ ! -d "$PKG_INSTALL_ROOT$CLIENT_BASEDIR" ]; then
    installf -c none $PKGINST $BASEDIR d 0755 root bin
  fi  
  installf -c none $PKGINST "$SHARED_LINK=$LINKED_DIR" s
  installf -f $PKGINST
  if [ $? -ne 0 ]; then
    echo "$PKG:  unable to add $SHARED_LINK to package" \
     "database." 1>&2
    return 2
  fi
}
#=================================================
# Roll it
#-------------------------------------------------
installf -f $PKGINST

CheckForSlave
if [ "$DEFAULT" = "FALSE" ]; then
  if [ ! -d "$PKG_INSTALL_ROOT$CLIENT_BASEDIR" ]; then
    installf -c none $PKGINST $BASEDIR d 0755 root bin
  fi
  installf -f $PKGINST
  exit 0;
fi
MoveLink
if [ $? -ne 0 ]; then
  installf -f $PKGINST
  exit 2
fi

