#!/bin/sh

# Needed utilities
AWK=/usr/bin/awk
CAT=/usr/bin/cat
CP=/usr/bin/cp
DF=/usr/bin/df
EXPR=/usr/bin/expr
GREP=/usr/bin/grep
MKDIR=/usr/bin/mkdir
MV=/usr/bin/mv
RM=/usr/bin/rm
SED=/usr/bin/sed

# Set needed variables
PATCHNO=105850-01
PKGDB=/var/sadm/pkg
PKGNAME=SUNWlmon
KBYTES_REQ=7500
TMP_KBYTES_REQ=25000

# Get the patch saveold flag if set to no exit
# This tells whether the patch can be backed out or not 
# SAVE_OLD = yes when PATCH_NO_UNDO = false
SAVE_OLD=`${CAT} $PARAMS_FILE | ${GREP} saveold | ${AWK} -F"=" '{print $2}'`
if [ "$SAVE_OLD" = "no" ]; then
    exit 0
fi

# Get the package save db 
PATCH_UNDO_ARCHIVE=`${CAT} $PARAMS_FILE | ${GREP} PATCH_UNDO_ARCHIVE | ${AWK} -F"=" '{print $2}'`
if [ "$PATCH_UNDO_ARCHIVE" = "none" ]; then
    PATCH_UNDO_ARCHIVE=$PKGDB/$PKGNAME
    PKGSAVEDB=$PKGDB/$PKGNAME/save/$PATCHNO
else
    PKGSAVEDB=$PATCH_UNDO_ARCHIVE/$PATCHNO/$PKGNAME
fi

# Check the disk space
KBYTES_AVAIL=`${DF} -k $PATCH_UNDO_ARCHIVE | ${SED} -e '1d' | ${AWK} '{print $4}'`
if [ `expr $KBYTES_REQ` -gt `expr $KBYTES_AVAIL` ]; then
   echo "Insufficient space in $PATCH_UNDO_ARCHIVE to save old files."
   echo "Space required in kilobytes:   $KBYTES_REQ"
   echo "Space available in kilobytes:  $KBYTES_AVAIL"
   exit 1
fi

# Check the tmp disk space
TMP_KBYTES_AVAIL=`${DF} -k /tmp | ${SED} -e '1d' | ${AWK} '{print $4}'`
if [ `expr $TMP_KBYTES_REQ` -gt `expr $TMP_KBYTES_AVAIL` ]; then
   echo "Insufficient space in /tmp to do work for saving old files."
   echo "Space required in kilobytes:   $TMP_KBYTES_REQ"
   echo "Space available in kilobytes:  $TMP_KBYTES_AVAIL"
   exit 1
fi

#
# Save old preremove script
#
echo "Saving old preremove script to tmp ..."
TMP_PKGINSTALL=/tmp/$PATCHNO/$PKGNAME
${RM} -rf $TMP_PKGINSTALL
${MKDIR} -p $TMP_PKGINSTALL
${CP} -f $PKGDB/$PKGNAME/install/preremove $TMP_PKGINSTALL 
