# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

PATH="/usr/bin:/usr/sbin:${PATH}"; export PATH
PKGCOND=/usr/bin/pkgcond

CheckZones()
{
    if [ "$ROOTDIR" = "/" -a -x /usr/bin/zonename ]; then
        ZONENAME=`/usr/bin/zonename`
        if [ ${ZONENAME} = "global" ]; then
            GLOBAL_ZONE=true
        else
            GLOBAL_ZONE=false
        fi
    else
        # Unable to determine zone
        GLOBAL_ZONE=true
    fi
}

LocalZones () {

  # Only for FCS
  return 0
}


ExecuteDefaultCmds () {
# put the add_drv stuff here etc and call this from
#  is_alternative_root and is_global_zone

mypatchid=120336-04

UNINSTALL_ORDER="SUNWsupdatemgru SUNWkupdatemgru SUNWjupdatemgru SUNWiupdatemgru SUNWhupdatemgru SUNWfupdatemgru SUNWeupdatemgru SUNWdupdatemgru SUNWcupdatemgru SUNWsbreg SUNWkbreg SUNWjbreg SUNWibreg SUNWhbreg SUNWfbreg SUNWebreg SUNWdbreg SUNWcbreg "
ALWAYS_UNINSTALL=""
ADMINFILE=/var/run/admin.quiet.$$
  
cat <<EOF > $ADMINFILE
mail=
instance=overwrite
partial=ask
runlevel=ask
idepend=nocheck
rdepend=nocheck
space=ask
setuid=nocheck
conflict=nocheck
action=nocheck
networktimeout=60
networkretries=3
authentication=quit
keystore=/var/sadm/security
proxy=
EOF
  
for pkg in $UNINSTALL_ORDER; do
  
    pkginfo -R ${ROOTDIR} $pkg > /dev/null 2>&1
    stat=$?
    if [ $stat -ne 0 ]; then
        continue
    fi
  
    echo $ALWAYS_UNINSTALL | grep $pkg > /dev/null 2>&1
    stat=$?
    if [ $stat -eq 0 ]; then
        pkgrm -R ${ROOTDIR} -n -a $ADMINFILE $pkg
        continue
    fi
  
    grep $pkg ${ROOTDIR}/var/sadm/patch/${mypatchid}/pkgrm_list > /dev/null 2>&1
    stat=$?
    if [ $stat -eq 0 ]; then
        pkgrm -R ${ROOTDIR} -n -a $ADMINFILE $pkg
        continue
    fi
done
rm ${ROOTDIR}/var/sadm/patch/${mypatchid}/pkgrm_list
  
#XXXSpecial_CommandsXXX#

return 0
}

ExecuteInProperEnvironment () {

   if $PKGCOND is_whole_root_nonglobal_zone > /dev/null 2>&1 ; then
       # Execute non-global whole root zone commands.
       # Should be same action as the default action.
       return 0
   fi

   if $PKGCOND is_nonglobal_zone > /dev/null 2>&1 ; then
       # Execute non-global zone commands. Should be no action here
       return 0
   fi

   if $PKGCOND is_netinstall_image > /dev/null 2>&1 ; then
       # Execute commands applicable to patching the mini-root.
       # There are usually no actions to take here since your patching
       # the mini-root on an install server.
       return 0
   fi

   if $PKGCOND is_mounted_miniroot > /dev/null 2>&1 ; then
       # Execute commands specific to the mini-root
       return 0
   fi

   if $PKGCOND is_diskless_client > /dev/null 2>&1 ; then
       # Execute commands specific to diskless client
       return 0
   fi

   if $PKGCOND is_alternative_root > /dev/null 2>&1 ; then
       # Execute commands specific to an alternate root
       ExecuteDefaultCmds
       return 0
   fi

   if $PKGCOND is_global_zone > /dev/null 2>&1 ; then
       # In a global zone and system is mounted on /.
       # Execute all commands.
       ExecuteDefaultCmds
       return 0
   fi

   return 1
} 

ZONENAME=global
[ -x /sbin/zonename ] && ZONENAME=global

if [ -x $PKGCOND ] ; then
   ExecuteInProperEnvironment && exit 0 || exit 1
else
   CheckZones
   if [ "${GLOBAL_ZONE}" = "true" ]; then
        ExecuteDefaultCmds
   else
        LocalZones
   fi
fi 
exit 0

