#!/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 "@(#)postremove	1.11 00/07/25 Sun Microsystems"

#=================================================
# Used variables
#-------------------------------------------------
SHARED_LINK=$BASEDIR/java
SHARED_LOCATION=$BASEDIR/bin
SYS_CONTENTS_FILE_NAME=contents
DEFAULT=FALSE

#=================================================
# Check for default package. Data is from SHARED_FILE
#-------------------------------------------------
CheckDefault() {
  sharLinkRec=`grep "^$CLIENT_BASEDIR/java=" $SYS_CONTENTS | \
      awk '{ \
        n=index($0, "SUNW"); \
        if (n != 0) { \
          print substr($0, n); \
        } \
      }'`
  prevPkg=`echo $sharLinkRec | awk '{ if ($NF ~ /^\-.*/ || $NF ~ /^\+.*/) print substr($NF, 2); else print $NF }'`
  prevPkgCl=`echo $sharLinkRec | awk '{ if ($NF ~ /^\-.*/ || $NF ~ /^\+.*/) str=substr($NF, 2); else str=$NF; split(str, arr, "."); print arr[1]; }'`
  if [ -n "$prevPkg" ]; then
    DEFAULT=TRUE
    if [ "$prevPkgCl" = "SUNWjvrt" ] || [ "$prevPkgCl" = "SUNWj2rt" ] || [ "$prevPkgCl" = "SUNWj3rt" ] ; then
      FIND_BIN="\/native_threads\/java"
    else
      FIND_BIN="\/native_threads\/javac"
    fi
    link=`grep $prevPkg $SYS_CONTENTS | grep "$FIND_BIN f" | \
                awk 'BEGIN{savedLn=""}{ \
                   if (NR == 1) {savedLn=$1; next; } \
                   if (length(savedLn) > length($1)) savedLn=$1; \
                }END{print savedLn;}' | sed "s/\/bin\/[a-z0-9]*$FIND_BIN//"`
    link=`echo $link | sed "s/.*\/java1\./\.\/java1\./" | sed "s/java1.2\/jre/java1.2/" | sed "s/j2se\/jre/j2se/"`
    if [ -z "$link" ]; then
      prevPkg=""
    fi
  else
    DEFAULT=FALSE
  fi
}
#=================================================
# Restore links for prev installed packages.
#-------------------------------------------------
RestoreLinks() {
  latestPkg=`echo $1 | awk '{print $NF}'`  
  if [ "X$latestPkg" != "X" ] && [ $latestPkg != $1 ]; then
    allPkg=`echo $1 | sed 's/ '$latestPkg"/:$latestPkg/"`
    othersPkg=`echo $allPkg | awk 'BEGIN{FS=":"}{print $1}'`
  else
    allPkg=""
    othersPkg=""
  fi
  if [ "X$PKG_INSTALL_ROOT" != "X" ]; then
    lVersion=`pkginfo -R $PKG_INSTALL_ROOT -l $latestPkg | grep 'VERSION:' | awk '{print $2}'`
  else
    lVersion=`pkginfo -l $latestPkg | grep 'VERSION:'| awk '{print $2}'`
  fi
  for pkg in $othersPkg; do
    if [ "X$PKG_INSTALL_ROOT" != "X" ]; then
        pVersion=`pkginfo -R $PKG_INSTALL_ROOT -l $pkg | grep 'VERSION:'| awk '{print $2}'`
    else
        pVersion=`pkginfo -l $pkg | grep 'VERSION:' | awk '{print $2}''`
    fi
    if [ "$pVersion" = "$lVersion" ] && [ "$pkg" != $latestPkg ]; then
      foundPkg=$pkg 
      break;
    else
      rmList=`grep ../java/bin $SYS_CONTENTS | grep $pkg | awk 'BEGIN{FS="="}{print $1}'`
      for link in $rmList; do
        rm -f $PKG_INSTALL_ROOT$link
      done
    fi
  done
  if [ "X$foundPkg" != "X" ]; then
    bitList=`grep ../java/bin/ $SYS_CONTENTS | grep $foundPkg | awk '{print $1}'`
  fi
  bitList="$bitList "`grep ../java/bin $SYS_CONTENTS | grep $latestPkg | awk '{print $1}'`
  for link in $bitList; do
    rFile=`echo $link | sed 's/=/ /' | awk '{print $2}'`
    rLink=`echo $link | sed 's/=/ /' | awk '{print $1}'`
    if [ ! -h $PKG_INSTALL_ROOT$rLink ]; then
      ln -s $rFile $PKG_INSTALL_ROOT$rLink
    fi
  done
}
#=================================================
# Move /usr/java link
#-------------------------------------------------
MoveLink() {
  if [ -n "$prevPkg" ]; then
    installf -c none $prevPkg "$SHARED_LINK=$link" s
    RestoreLinks "$sharLinkRec"
    installf -f $prevPkg
    if [ $? -ne 0 ]; then
      echo "$PKG:  unable to add $SHARED_LINK to package $prevPkg" \
       "database." 1>&2
      return 2
    fi
  fi
}
#=================================================
# Roll it
#-------------------------------------------------
removef -f $PKGINST

SYS_CONTENTS=$PKG_INSTALL_ROOT/var/sadm/install/$SYS_CONTENTS_FILE_NAME

CheckDefault
if [ "$DEFAULT" = "FALSE" ]; then
  removef -f $PKGINST
  exit 0
fi
MoveLink
if [ $? -ne 0 ]; then
  removef -f $PKGINST
  exit 2
fi

