#!/bin/sh
#F-Doc 050401161 MOD 
#F-Doc 050401127 ADD start
#F-doc 50401135 MOD Start
#ident "$installhdlm: installhdlm Build 5.93.0.7   07/07/13 18:00:00 $"
#F-doc 50401217 Copyright information Updated - start
#----------------------------------------------------------------------------#
# PRODUCT :  HDLM Driver 0540                                                #
#----------------------------------------------------------------------------#
# NAME :     installhdlm                                                     #
# FUNCTION : installhdlm script to call appropriate installhdlm exe          #
# INSTANCE :                                                                 #
# MEMO :                                                                     #
# DATE :     2004/05/03                                                      #
# Last Modified:   13/07/2007                                                #
# AUTHOR :   George Martin                                          	     #
# HISTORY :                                                                  #
#                                                                            #
#@ All Rights Reserved. Copyright (C) 2003, 2007, Hitachi, Ltd.              #
#----------------------------------------------------------------------------#
#F-doc 50401217 Copyright information Updated - End
OPTIONS=$*
#F-doc 50701010 : Fullpath for Installer - start
CMD_ECHO="/bin/echo"
CMD_EXPR="/usr/bin/expr"
CMD_RPM="/bin/rpm"
#F-doc 50701010 : Fullpath for Installer - end


INSTALLHDLM_VERSION="05-93"
CMD_AWK="/bin/gawk"
CMD_BASENAME="/bin/basename"
CMD_CAT="/bin/cat"
CMD_CHCON="/usr/bin/chcon"
CMD_CHOWN="/bin/chown"
CMD_CHMOD="/bin/chmod"
CMD_CP="/bin/cp -pf"
CMD_DATE="/bin/date"
CMD_DF="/bin/df"
CMD_DMESG="/bin/dmesg"
CMD_GREP="/bin/grep"
CMD_LS="/bin/ls"
CMD_MKDIR="/bin/mkdir -p"
CMD_MV="/bin/mv"
CMD_MOUNT="/bin/mount"
CMD_PS="/bin/ps"
CMD_PWD="/bin/pwd"
CMD_RM="/bin/rm -f"
CMD_TOUCH="/bin/touch"
CMD_UNAME="/bin/uname"

# HDLM File related macros
BOOT_LOCAL="/etc/init.d/boot.local"
ETC_DMGR="/etc/opt/DynamicLinkManager"
ETC_LIC_FILE="/etc/opt/DynamicLinkManager/dlm.lic_key"
ETC_RCD="/etc/rc.d"
ETC_INITD="/etc/init.d"
HALT_FILE="/etc/rc.d/init.d/halt"
HDLM_INSTLOGDIR="/var/tmp/hdlminstlog/"
HDLM_LOGFILE="/var/tmp/hdlminstlog/installhdlm01.log"
INSTALLHDLM="installhdlm0"
KERNEL_2_4=0
KERNEL_2_6=0
MODULES_FILE="/etc/modprobe.conf"
OPT_DMGR="/opt/DynamicLinkManager"
OPT_HDVM="/opt/HDVM"
OPT_HITACHI="/opt/hitachi"
PROC_CPUINFO_FILE="/proc/cpuinfo"
RC_SYSINIT="/etc/rc.d/rc.sysinit"
REDHAT_RELEASE="/etc/redhat-release"
SUSE_RELEASE="/etc/SuSE-release"
VAR_LIC_FILE="/var/tmp/hdlm_license"
VAR_TMP="/var/tmp"


FLAG_V="FALSE"
OPTION_P="-p"
OPTION_S="-s"
OPTION_V="-v"



VERSION=`$CMD_UNAME -r | $CMD_AWK -F "." '{print $2}'`
if [ $VERSION -eq 4 ] ; then
	KERNEL_2_4=1
	if [ -f $REDHAT_RELEASE ] ; then
		MODULES_FILE="/etc/modules.conf"
	fi
else
	KERNEL_2_6=1
fi

#F-Doc 050401131 MOD start
#Exit if the target machine is neither RedHat or Suse Linux
#if [ ! -f /etc/SuSE-release ] && [ ! -f /etc/redhat-release ]; then
#F-doc 50701010 : Fullpath for Installer - start
#     echo "KAPL09003-E Cannot install in this system."
#     $CMD_ECHO "KAPL09003-E Cannot install in this system."
#F-doc 50701010 : Fullpath for Installer - end
#     exit 1
#fi
#F-Doc 050401131 MOD end

#Define command paths
#F-doc 50701010 : Fullpath for Installer - start
#CMD_ECHO="/bin/echo"
#F-doc 50701010 : Fullpath for Installer - end
CMD_WC="/usr/bin/wc"
#if [ -f /etc/SuSE-release ]; then
#	CMD_CUT="/usr/bin/cut"
#else
#	CMD_CUT="/bin/cut"
#fi

#Length of the installhdlm script name
INSTALLSCRIPT_LENGTH=11
#Length of the command name
#F-doc 50701010 : Fullpath for Installer - start
#COMMAND_LENGTH=`echo $0 | $CMD_WC -L`
COMMAND_LENGTH=`$CMD_ECHO $0 | $CMD_WC -L`
#Length of the installhdml script path 
#DIFF_LENGTH=`expr $COMMAND_LENGTH - $INSTALLSCRIPT_LENGTH`
DIFF_LENGTH=`$CMD_EXPR $COMMAND_LENGTH - $INSTALLSCRIPT_LENGTH`
#INSTALLSCRIPT_PATH=`echo $0 | $CMD_CUT -c -$DIFF_LENGTH`
#INSTALLSCRIPT_PATH=`$CMD_ECHO $0 | $CMD_CUT -c -$DIFF_LENGTH`
#F-doc 50701010 : Fullpath for Installer - end
#BIN=bin
#INSTALLEXE_PATH=$INSTALLSCRIPT_PATH$BIN    
#TARGET_ARCH=`$CMD_UNAME -m`                    
#if [ "$TARGET_ARCH" = "ia64" ];then                                 
#        INSTALLHDLM_EXE=$INSTALLEXE_PATH/installhdlmipf            
#F-Doc 050401131 MOD start  
#F-doc 50701010 : Fullpath for Installer - start
#elif [ `expr $TARGET_ARCH : \[i\]\[3-6\]\[8\]\[6\]` != 0 ] || [ `expr $TARGET_ARCH : x86_64` ]; then
#elif [ `$CMD_EXPR $TARGET_ARCH : \[i\]\[3-6\]\[8\]\[6\]` != 0 ] || [ `$CMD_EXPR $TARGET_ARCH : x86_64` ]; then
#F-doc 50701010 : Fullpath for Installer - end
#	INSTALLHDLM_EXE=$INSTALLEXE_PATH/installhdlm  
#else
#     $CMD_ECHO "KAPL09003-E Cannot install in this system."
#     exit 1       
#fi
#F-Doc 050401131 MOD end

#message function to display messages 
message()
{
	case "$1" in
	'KAPL09106' ) $CMD_ECHO "KAPL09106-E The specified HDLM installer command is invalid." ;;
	'KAPL09177' ) $CMD_ECHO "KAPL09177-I HDLM version: $INSTALLHDLM_VERSION" ;;
	 * ) ;;
	esac
}
#option check function is used for Specified option syntax check
option_check()
{
  case "$#" in
  1 )	if [ "$1" = "$OPTION_S" ] ; then 
		return 0  
	elif [ "$1" = "$OPTION_V" ]; then
	  	FLAG_V="TRUE"
		return 0  
	else 
 	 	message "KAPL09106"
	  	exit 1
	fi  ;;
  2 )	 if [ "$1" = "$OPTION_P" ]; then

		  return 0
	
        else
 	  	message "KAPL09106"
	  	exit 1 
	fi ;;
  3 ) if [ "$1" = "$OPTION_S" -a  "$2" = "$OPTION_P" ]; then

		  return 0

     elif [ "$1" = "$OPTION_P" -a "$3" = "$OPTION_S" ]; then

		  return 0
     fi		
     message "KAPL09106"
     exit 1 
	 ;;
  * ) message "KAPL09106"
	exit 1
	;;
 esac
}
#option check function ends
if [ $# -gt  0 ] ;  then
	option_check "$@"
	if [ "$FLAG_V" = "TRUE" ]; then
		message "KAPL09177"
		exit 0
	fi 
fi


#if [ ! -f $INSTALLHDLM_EXE ]; then
	#F-Doc 050401132 MOD start 
#	$CMD_ECHO "KAPL09121-E $INSTALLHDLM_EXE is not present at $INSTALLEXE_PATH."
	#F-Doc 050401132 MOD end
#	exit 1
#fi

Header_Log()
{
	$CMD_ECHO "####################################################################################################" >> $1
	$CMD_ECHO "# HDLM Install Log <HDLM Version: $INSTALLHDLM_VERSION> <`$CMD_DATE`>"                                >> $1
	$CMD_ECHO "####################################################################################################" >> $1
	$CMD_ECHO "" >> $1
}

End_Log()
{
	$CMD_ECHO "" >> $1
	$CMD_ECHO "####################################################################################################" >> $1
	$CMD_ECHO "# HDLM Install Log End"                                                                               >> $1
	$CMD_ECHO "####################################################################################################" >> $1
}

Log_Debug_Message()
{
	if [ $4 == "COMMAND" ]; then
		TEST=`$CMD_BASENAME "$1"`
		TEST="$TEST $2"
	else
		TEST=$1
	fi
	$CMD_ECHO "****************************************************************************************************" >> $3
	$CMD_ECHO "Information : $TEST"                                                                                  >> $3
	$CMD_ECHO "====================================================================================================" >> $3
	if [ $4 == "COMMAND" ]; then
		TEMP="$1 $2"
		$TEMP >> $3 2>&1
	else
		$CMD_CAT $1 >> $3 2>&1
	fi
	$CMD_ECHO "" >> $3
	$CMD_ECHO "" >> $3
}

Before_Install_Logs()
{
	#Logging contents of "/proc/cpuinfo" to logfile
	Log_Debug_Message $PROC_CPUINFO_FILE "" $HDLM_LOGFILE "FILE"

	#Logging "uname -a" O/P to logfile
	Log_Debug_Message "$CMD_UNAME" "-a" $HDLM_LOGFILE "COMMAND"

	#Logging "rpm -qa" O/P to logfile
	Log_Debug_Message "$CMD_RPM" "-qa" $HDLM_LOGFILE "COMMAND"

	#Logging "mount" O/P to logfile
	Log_Debug_Message $CMD_MOUNT "" $HDLM_LOGFILE "COMMAND"

	#Logging "df -km" O/P to logfile
	Log_Debug_Message "$CMD_DF" "-k" $HDLM_LOGFILE "COMMAND"

	#Logging "pwd" O/P to logfile
	Log_Debug_Message "$CMD_PWD" "" $HDLM_LOGFILE "COMMAND"

	#Logging "pwd" O/P to logfile
	Log_Debug_Message "$CMD_DMESG" "" $HDLM_LOGFILE "COMMAND"

	if [ -f $REDHAT_RELEASE ]; then
		#Logging contents of "/etc/rc.d/rc.sysinit" to logfile
		Log_Debug_Message $RC_SYSINIT "" $HDLM_LOGFILE "FILE"

		#Logging contents of "/etc/rc.d/init.d/halt" to logfile
		Log_Debug_Message $HALT_FILE "" $HDLM_LOGFILE "FILE"
	elif [ -f $SUSE_RELEASE ]; then
		#Logging contents of "/etc/init.d/boot.local" to logfile
		Log_Debug_Message $BOOT_LOCAL "" $HDLM_LOGFILE "FILE"
	fi

	#Logging contents of "$MODULES_FILE" to logfile
	Log_Debug_Message $MODULES_FILE "" $HDLM_LOGFILE "FILE"

	#Logging license info to logfile
	Log_Debug_Message $VAR_LIC_FILE "" $HDLM_LOGFILE "FILE"
	Log_Debug_Message $ETC_LIC_FILE "" $HDLM_LOGFILE "FILE"

}

After_Install_Logs()
{
	$CMD_ECHO "" >> $HDLM_LOGFILE
	$CMD_ECHO "" >> $HDLM_LOGFILE
	#Logging contents of different directories in logfile
	if [ -f $REDHAT_RELEASE -a $KERNEL_2_6 -eq 1 ] ; then
		Log_Debug_Message "$CMD_LS" "-altRZ $OPT_DMGR" $HDLM_LOGFILE "COMMAND"
		Log_Debug_Message "$CMD_LS" "-altRZ $OPT_HDVM" $HDLM_LOGFILE "COMMAND"
		Log_Debug_Message "$CMD_LS" "-altRZ $OPT_HITACHI" $HDLM_LOGFILE "COMMAND"
		Log_Debug_Message "$CMD_LS" "-altRZ $ETC_DMGR" $HDLM_LOGFILE "COMMAND"
		Log_Debug_Message "$CMD_LS" "-altRZ $VAR_TMP" $HDLM_LOGFILE "COMMAND"
		Log_Debug_Message "$CMD_LS" "-altRZ $ETC_RCD" $HDLM_LOGFILE "COMMAND"
	fi

	Log_Debug_Message "$CMD_LS" "-altR $OPT_DMGR" $HDLM_LOGFILE "COMMAND"
	Log_Debug_Message "$CMD_LS" "-altR $OPT_HDVM" $HDLM_LOGFILE "COMMAND"
	Log_Debug_Message "$CMD_LS" "-altR $OPT_HITACHI" $HDLM_LOGFILE "COMMAND"
	Log_Debug_Message "$CMD_LS" "-altR $ETC_DMGR" $HDLM_LOGFILE "COMMAND"
	Log_Debug_Message "$CMD_LS" "-altR $VAR_TMP" $HDLM_LOGFILE "COMMAND"

	if [ -f $REDHAT_RELEASE ] ; then
		Log_Debug_Message "$CMD_LS" "-altR $ETC_RCD" $HDLM_LOGFILE "COMMAND"
	elif [ -f $SUSE_RELEASE ] ; then
		Log_Debug_Message "$CMD_LS" "-altR $ETC_INITD" $HDLM_LOGFILE "COMMAND"
	fi

	#Logging "rpm -qa" O/P to logfile
	Log_Debug_Message "$CMD_RPM" "-qa" $HDLM_LOGFILE "COMMAND"

	#Logging "rpm -qi HDLM" O/P to logfile
	Log_Debug_Message "$CMD_RPM" "-qi HDLM" $HDLM_LOGFILE "COMMAND"

	#Logging "rpm -qlv HDLM" O/P to logfile
	Log_Debug_Message "$CMD_RPM" "-qlv HDLM" $HDLM_LOGFILE "COMMAND"
	
	#Logging "mount" O/P to logfile
	Log_Debug_Message $CMD_MOUNT "" $HDLM_LOGFILE "COMMAND"

	#Logging "df -km" O/P to logfile
	Log_Debug_Message "$CMD_DF" "-k" $HDLM_LOGFILE "COMMAND"

	if [ -f $REDHAT_RELEASE ]; then
		#Logging contents of "/etc/rc.d/rc.sysinit" to logfile
		Log_Debug_Message $RC_SYSINIT "" $HDLM_LOGFILE "FILE"

		#Logging contents of "/etc/rc.d/init.d/halt" to logfile
		Log_Debug_Message $HALT_FILE "" $HDLM_LOGFILE "FILE"
	elif [ -f $SUSE_RELEASE ]; then
		#Logging contents of "/etc/init.d/boot.local" to logfile
		Log_Debug_Message $BOOT_LOCAL "" $HDLM_LOGFILE "FILE"
	fi

	#Logging contents of "$MODULES_FILE" to logfile
	Log_Debug_Message $MODULES_FILE "" $HDLM_LOGFILE "FILE"
	
	#Logging contents of "ps -ef" to logfile
	Log_Debug_Message "$CMD_PS" "-ef" $HDLM_LOGFILE "COMMAND"
}

RET=0
if [ ! -d $HDLM_INSTLOGDIR ]; then
	$CMD_MKDIR $HDLM_INSTLOGDIR > /dev/null 2>&1
	RET=$?
	if [ $RET -eq 0 ]; then	
		$CMD_CHMOD 0700 $HDLM_INSTLOGDIR > /dev/null 2>&1
		$CMD_CHOWN root:sys $HDLM_INSTLOGDIR > /dev/null 2>&1
		if [ $KERNEL_2_6 -eq 1 -a -f $REDHAT_RELEASE ]; then
			$CMD_CHCON system_u:object_r:tmp_t $HDLM_INSTLOGDIR > /dev/null 2>&1
		fi
	fi
fi

if [ $RET -eq 0 ]; then
	COUNTER=9
	if [ -f $HDLM_INSTLOGDIR"installhdlm10.log" ]; then
			$CMD_RM $HDLM_INSTLOGDIR"installhdlm10.log"
	fi
	while [ $COUNTER -gt 0 ]; do
		if [ $COUNTER -eq 9 ]; then			
			if [ -f $HDLM_INSTLOGDIR$INSTALLHDLM$COUNTER.log ]; then
				$CMD_MV -f $HDLM_INSTLOGDIR$INSTALLHDLM$COUNTER.log $HDLM_INSTLOGDIR"installhdlm10.log"
			fi
		else
			if [ -f $HDLM_INSTLOGDIR$INSTALLHDLM$COUNTER.log ]; then
				TMP_CNT=`$CMD_EXPR $COUNTER + 1`
				$CMD_MV -f $HDLM_INSTLOGDIR$INSTALLHDLM$COUNTER.log $HDLM_INSTLOGDIR$INSTALLHDLM$TMP_CNT.log
			fi
		fi
		COUNTER=`$CMD_EXPR $COUNTER - 1`
	done
	if [ -f $HDLM_LOGFILE ]; then
		$CMD_RM $HDLM_LOGFILE
	fi
	$CMD_TOUCH $HDLM_LOGFILE > /dev/null 2>&1
	FILE_CREATE=$?
	if [ $FILE_CREATE -eq 0 ]; then
		$CMD_CHMOD 0444 $HDLM_LOGFILE > /dev/null 2>&1
		$CMD_CHOWN root:sys $HDLM_LOGFILE > /dev/null 2>&1
		if [ $KERNEL_2_6 -eq 1 -a -f $REDHAT_RELEASE ]; then
			$CMD_CHCON root:object_r:tmp_t $HDLM_LOGFILE > /dev/null 2>&1
		fi
		Header_Log $HDLM_LOGFILE
		Before_Install_Logs
	fi
fi

# Checking of OS release files starts
if [ ! -f $SUSE_RELEASE ] && [ ! -f $REDHAT_RELEASE ]; then
	$CMD_ECHO "KAPL09003-E Cannot install in this system."
	if [ $FILE_CREATE -eq 0 ]; then
		$CMD_ECHO "****************************************************************************************************" >> $HDLM_LOGFILE
		$CMD_ECHO "Information : Distribution Check."                                      >> $HDLM_LOGFILE
		$CMD_ECHO "====================================================================================================" >> $HDLM_LOGFILE
		$CMD_ECHO "KAPL09003-E Cannot install in this system." >> $HDLM_LOGFILE
		$CMD_ECHO "" >> $HDLM_LOGFILE
		$CMD_ECHO "" >> $HDLM_LOGFILE
		End_Log $HDLM_LOGFILE
	fi
	exit 1
fi
# Checking of OS release files ends
if [ -f $SUSE_RELEASE ]; then
	CMD_CUT="/usr/bin/cut"
else
	CMD_CUT="/bin/cut"
fi

INSTALLSCRIPT_PATH=`$CMD_ECHO $0 | $CMD_CUT -c -$DIFF_LENGTH`

BIN=bin
INSTALLEXE_PATH=$INSTALLSCRIPT_PATH$BIN    
TARGET_ARCH=`$CMD_UNAME -m`                    
if [ "$TARGET_ARCH" = "ia64" ];then                                 
	INSTALLHDLM_EXE=$INSTALLEXE_PATH/installhdlmipf            
elif [ `$CMD_EXPR $TARGET_ARCH : \[i\]\[3-6\]\[8\]\[6\]` != 0 ] || [ "$TARGET_ARCH" = "x86_64" ]; then
	INSTALLHDLM_EXE=$INSTALLEXE_PATH/installhdlm  
else
	$CMD_ECHO "KAPL09003-E Cannot install in this system."
	if [ $FILE_CREATE -eq 0 ]; then
		$CMD_ECHO "****************************************************************************************************" >> $HDLM_LOGFILE
		$CMD_ECHO "Information : Architecture Check."                                      >> $HDLM_LOGFILE
		$CMD_ECHO "====================================================================================================" >> $HDLM_LOGFILE
		$CMD_ECHO "KAPL09003-E Cannot install in this system." >> $HDLM_LOGFILE
		$CMD_ECHO "" >> $HDLM_LOGFILE
		$CMD_ECHO "" >> $HDLM_LOGFILE
		End_Log $HDLM_LOGFILE
	fi
	exit 1
fi

if [ ! -f $INSTALLHDLM_EXE ]; then
	$CMD_ECHO "KAPL09121-E $INSTALLHDLM_EXE is not present at $INSTALLEXE_PATH."
	if [ $FILE_CREATE -eq 0 ]; then
		$CMD_ECHO "****************************************************************************************************" >> $HDLM_LOGFILE
		$CMD_ECHO "Information : Installhdlm Executable Check."                                      >> $HDLM_LOGFILE
		$CMD_ECHO "====================================================================================================" >> $HDLM_LOGFILE
		$CMD_ECHO "KAPL09121-E $INSTALLHDLM_EXE is not present at $INSTALLEXE_PATH." >> $HDLM_LOGFILE
		$CMD_ECHO "" >> $HDLM_LOGFILE
		$CMD_ECHO "" >> $HDLM_LOGFILE
		End_Log $HDLM_LOGFILE
	fi
	exit 1
fi

$CMD_ECHO "****************************************************************************************************" >> $HDLM_LOGFILE
$CMD_ECHO "Information : Path of Installhdlm binary file and given options."                                      >> $HDLM_LOGFILE
$CMD_ECHO "====================================================================================================" >> $HDLM_LOGFILE
$CMD_ECHO "Installhdlm will be executed from path = "$INSTALLHDLM_EXE", with argument = "$OPTIONS""              >> $HDLM_LOGFILE
$CMD_ECHO "" >> $HDLM_LOGFILE
$CMD_ECHO "" >> $HDLM_LOGFILE

$CMD_ECHO "****************************************************************************************************" >> $HDLM_LOGFILE
$CMD_ECHO "Information: Installation trace logs."                                                                >> $HDLM_LOGFILE
$CMD_ECHO "====================================================================================================" >> $HDLM_LOGFILE

BEFORE_FILES=`$CMD_LS $VAR_TMP/rpm-tmp.* 2>/dev/null`
$INSTALLHDLM_EXE $*                                                 
#F-Doc 050401127 ADD end

RET_VAL=$?
AFTER_FILES=`$CMD_LS $VAR_TMP/rpm-tmp.* 2>/dev/null`
for file in $AFTER_FILES
do
	$CMD_ECHO $BEFORE_FILES | $CMD_GREP -w $file >/dev/null 2>&1
	RET=$?
	if [ $RET -ne 0 ]; then
		$CMD_CAT $file 2>/dev/null | $CMD_GREP -I "KAPL09" >/dev/null 2>&1
		RET1=$?
		if [ $RET1 -eq 0 ]; then
			$CMD_RM $file
		fi
	fi
done


if [ $RET_VAL == 0 ]; then
	$CMD_RPM -e HDLMhelp-en > /dev/null 2>&1
	$CMD_RPM -e HDLMhelp-jp > /dev/null 2>&1
fi
if [ $FILE_CREATE -eq 0 ]; then
	After_Install_Logs
	End_Log $HDLM_LOGFILE
fi
exit $RET_VAL
