#!/usr/bin/sh
trap "dlm_interrupt" 1 2 3 15
################################################################################
## PRODUCT  : HDLM Installer                                                  ##
##                                                                            ##
## NAME     : installhdlm                                                     ##
##                                                                            ##
## FUNCTION : HDLM Silent installation                                        ##
##                                                                            ##
## DATE     : 2008.03.13                                                      ##
##                                                                            ##
## All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.                     ##
################################################################################
#@(#)HDLM Silent installation 6.2.0_sol (Apr 06 2009)

################################################################################
## Definition
################################################################################

## COMMAND PATH ##
UNAME="/usr/bin/uname"
REBOOT="/usr/sbin/reboot"
PS="/usr/bin/ps"
GREP="/usr/bin/grep"
ECHO="/usr/bin/echo"
RM="/usr/bin/rm"
CP="/usr/bin/cp"
TOUCH="/usr/bin/touch"
DIRNAME="/usr/bin/dirname"
BASENAME="/usr/bin/basename"
LS="/usr/bin/ls"
TEE="/usr/bin/tee"

## HDLM Fileset version ##
NEW_FILESET_VER="06.2.0.0000"
OLD_FILESET_VER=""

## pkg name ##
PKG="DLManager"

## /dev/null ##
DEVNULL="/dev/null"

## Server name ##
SERVER_NAME=`${UNAME} -n`

## The utility used by installhdlm ##
NAME_INSTHDLM="installhdlm"
NAME_ANALYSIS="installhdlm_analysis"
NAME_DLNKMGR="dlnkmgr"
NAME_PKGADD="pkgadd"
NAME_SETCONF="dlmsetconf"
NAME_DLMMGR="dlmmgr"

PATH_DLMLOGDIR="/var/opt/DynamicLinkManager/log"
PATH_DLNKMGR="/opt/DynamicLinkManager/bin/${NAME_DLNKMGR}"
PATH_DLMMGR="/opt/DynamicLinkManager/bin/${NAME_DLMMGR}"
PATH_DLMSETCONF="/opt/DynamicLinkManager/bin/${NAME_SETCONF}"

## dlmmgr command ##
DLMMGR_START="${PATH_DLMMGR} -n"
DLMMGR_STOP="${PATH_DLMMGR} -k"

## Error Code ##
NORMAL_RETURN_VALUE=0
ERRER_RETURN_VALUE=1

## Position ID and return code ##
POSI_NUM_9001=9001
POSI_NUM_9002=9002
ERR_RTN="-1"

## KAPL09179-I Location No
KAPL09179_LOCATION_NO=""

## KAPL09215-E Error Code ##
NOT_TMPDIR=4
TMPDIR_NOT_WRITE=5
TMPFILESYSTEM_NOT_WRITE=6
LICENSEDIR_NOT_CAPACITY=7
NOT_SETCONF=10
NOT_REBOOT=11

## KAPL09235-E Error Code ##
NOT_LOGDIR=1
LOGDIR_NOT_WRITE=2
LOGFILESYSTM_NOT_WRITE=3
LOGFILE_NOT_WRITE=4

## installhdlm_analysis result([INSTALLATION_SETTINGS] section) ##
INSTSET_KEYMAX="6"

INSTALL_LOCATION_LINENUM="1"
LOGDIR_LINENUM="2"
LICENSE_KEYFILE_LINENUM="3"
LICENSE_KEY_LINENUM="4"
DRIVER_CONFIG_LINENUM="5"
RESTART_LINENUM="6"

USE_INSTALL_LOCATION=""
USE_LOGDIR=""
USE_LICENSE_KEYFILE=""
USE_DRIVER_CONFIG=""
USE_RESTART=""

DFLT_INSTALL_LOCATION="/dev/cd0"
DFLT_LOGDIR="/var/tmp"
DFLT_LICENSE_KEYFILE="/var/tmp/hdlm_license"
DFLT_DRIVER_CONFIG="y"
DFLT_RESTART="n"

## Flag ON or OFF ##
FLG_OFF="0"
FLG_ON="1"

## Parameter Flags ##
FLG_FILE=${FLG_OFF}
FLG_HELP=${FLG_OFF}

## Installation Type Flags ##
FLG_NEWINSTALL=${FLG_OFF}
FLG_UPDATEINSTALL=${FLG_OFF}

## Setting flags of HDLM ##
FLG_DLMSETCONF=${FLG_OFF}
FLG_RESTART=${FLG_OFF}
FLG_RESTART_NEWINSTALL=${FLG_OFF}
FLG_RESTART_UPDATEINSTALL=${FLG_OFF}

## logfile maintenance massege head ##
MAINTENANCE_INFO="INFO"
MAINTENANCE_DATE="date +%m"-"%d"-"%Y"
MAINTENANCE_TIME="date +%T"

## Logout flags ##
FLG_LOGOUT_START=${FLG_OFF}
FLG_ERRER_TMPOUT=${FLG_OFF}
FLG_ERROR_LOGOUT=${FLG_OFF}
FLG_RESULT_NOTOUT=${FLG_OFF}

## End type of installhdlm is judged. ##
FLG_ERROR_PROCESSING=${FLG_OFF}

## Parameter ##
PARAM_NUM=""
PARAM_F="-f"
PARAM_H="-h"

## Temporary file name ##
TMPFILE_ANALYSIS="TMPinstallhdlm_analysis_`date +%y%m%d%S$$`"
TMPFILE_MESSAGE="TMPinstallhdlm_message_`date +%y%m%d%S$$`"
TMPFILE_COPYOUT_LICENSEKEY="/var/tmp/TMPinstallhdlm_hdlmlicense_`date +%y%m%d%S$$`"

## Log file name ##
NAME_LOGFILE="installhdlm.log"

## Path and directoryname or filename ##
PATH_TMPFILE_DIR="/var/tmp"
PATH_TMPFILE_ANALYSIS="${PATH_TMPFILE_DIR}/${TMPFILE_ANALYSIS}"
PATH_TMPFILE_MESSAGE="${PATH_TMPFILE_DIR}/${TMPFILE_MESSAGE}"
PATH_FLG_FILE_SILENT_INSTALL="${PATH_TMPFILE_DIR}/flg_file_silent_install"

PATH_LOGFILE=""

## installhdlm_analysis argument ##
ANALYSIS_ARG_1=""
ANALYSIS_ARG_2="${PATH_TMPFILE_ANALYSIS}"
ANALYSIS_ARG_3="${PATH_TMPFILE_MESSAGE}"

## installhdlm_analysis return ##
NORMAL_RETURN=0
ERR_RETURN_LOGOUT=1
ERR_RETURN_ELOGOUT=2
ERR_RETURN_NOT_LOGOUT=3

## log cory Flag ##
FLG_COPYLOG=${FLG_OFF}

## HDLM version ##
PRE_HDLM_VERSION=""
PRE_HDLM_MAJOR=""
PRE_HDLM_MINOR=""
LIC_SPT_VER2="0540"
FLG_OLD_LICENSE_VERSION=${FLG_OFF}

## NETMDM file ##
NETMDM_DIR="netmdm_sample"
NETMDM_NEWINSTALL_FILE="netmdm_new_install"
NETMDM_UPDATEINSTALL_FILE="netmdm_update_install"

## License ##
LIC_DIR_UP="/opt/DynamicLinkManager"

## USE SILENT_INSTALL FLG ##
FLG_SILENT_INSTALL=${FLG_OFF}
ENVIRONMENT_VARIABLE=""
PATH_PRINTENV="/usr/ucb/printenv"

## etc ##
COUNTER=1

################################################################################
## Interrupt
## $-: No argument
################################################################################
dlm_interrupt()
{
    trap "" 1 2 3 15

    DLM_INTERRUPT_LOG_HEAD="$MAINTENANCE_INFO  `$MAINTENANCE_DATE` `$MAINTENANCE_TIME`"
    DLM_INTERRUPT_RTN=""
    DLM_INTERRUPT_TMPMSG=""

    DLM_INTERRUPT_TMP_MGRPS=""
    DLM_INTERRUPT_CNT=20

    ## dlmmgr command end ##
    DLM_INTERRUPT_TMP_MGRPS=`${PS} -e 2>${DEVNULL} | ${GREP} -w dlmmgr 2>${DEVNULL} | ${GREP} -v ${GREP} 2>${DEVNULL} | wc -l 2>${DEVNULL}`
    if [ ${DLM_INTERRUPT_TMP_MGRPS} != 0 ]; then
        ${DLMMGR_STOP} >${DEVNULL} 2>&1
        DLM_INTERRUPT_CNT=20
        while [ ${DLM_INTERRUPT_CNT} -gt 0 ]
        do
            DLM_INTERRUPT_TMP_MGRPS=`${PS} -e 2>${DEVNULL} | ${GREP} -w dlmmgr 2>${DEVNULL} | ${GREP} -v ${GREP} 2>${DEVNULL} | wc -l 2>${DEVNULL}`
            if [ ${DLM_INTERRUPT_TMP_MGRPS} != 0 ]; then
                DLM_INTERRUPT_CNT=`expr $DLM_INTERRUPT_CNT - 1`
                sleep 1
            else
                break
            fi
        done
    fi

    DLM_INTERRUPT_TMPMSG="KAPL09237-I A user operation ended installhdlm."
    ${ECHO} "$DLM_INTERRUPT_TMPMSG"

    if [ "${FLG_LOGOUT_START}" -eq "${FLG_ON}" -a "${FLG_ERROR_LOGOUT}" -eq "${FLG_OFF}" ]; then
        ${ECHO} "${DLM_INTERRUPT_LOG_HEAD} ${DLM_INTERRUPT_TMPMSG}" 2>${DEVNULL} >> "${PATH_LOGFILE}"
        ${ECHO} "" 2>${DEVNULL} >> "${PATH_LOGFILE}"
    fi

    ${RM} -f "${PATH_TMPFILE_ANALYSIS}" >${DEVNULL} 2>&1
    ${RM} -f "${PATH_TMPFILE_MESSAGE}" >${DEVNULL} 2>&1
    ${RM} -f "${TMPFILE_COPYOUT_LICENSEKEY}" >${DEVNULL} 2>&1
    ${RM} -f "${PATH_FLG_FILE_SILENT_INSTALL}" >${DEVNULL} 2>&1

    exit "${ERRER_RETURN_VALUE}"
}


################################################################################
## exit_deltmpfile
## $1: installhdlm return value
################################################################################
exit_deltmpfile()
{
    EXIT_DELTMPFILE_RETURN_VALUE=$1
    EXIT_DELTMPFILE_RTN=0

    ${RM} -f "${PATH_TMPFILE_ANALYSIS}" >${DEVNULL} 2>&1
    ${RM} -f "${PATH_TMPFILE_MESSAGE}" >${DEVNULL} 2>&1
    ${RM} -f "${PATH_FLG_FILE_SILENT_INSTALL}" >${DEVNULL} 2>&1

    if [ "${FLG_ERRER_TMPOUT}" -eq "${FLG_ON}" -o "${FLG_ERROR_LOGOUT}" -eq "${FLG_ON}" ]; then
        print_messages "KAPL09236"
    fi

    if [ "${EXIT_DELTMPFILE_RETURN_VALUE}" -eq "${NORMAL_RETURN_VALUE}" ]; then
        if [ "${FLG_ERROR_PROCESSING}" -eq "${FLG_OFF}" ]; then
            print_messages "KAPL09211" "${NAME_INSTHDLM}"
        else
            print_messages "KAPL09213" "${NAME_INSTHDLM}"
        fi
    else
        print_messages "KAPL09212" "${NAME_INSTHDLM}"
    fi

    if [ "${FLG_LOGOUT_START}" -eq "${FLG_ON}" -a "${FLG_ERROR_LOGOUT}" -eq "${FLG_OFF}" ]; then
        ${ECHO} "" 2>${DEVNULL} >> "${PATH_LOGFILE}"
    fi

    if [ "${FLG_COPYLOG}" -eq "${FLG_ON}" ]; then
        ${CP} -p "${PATH_LOGFILE}" "${PATH_DLMLOGDIR}" 2>${DEVNULL}
    fi

    exit "${EXIT_DELTMPFILE_RETURN_VALUE}"
}

################################################################################
## print_logmessage
## $1: print out massege
################################################################################
print_logmessage()
{
    PRINT_LOGMESSAGE_LOG_HEAD="$MAINTENANCE_INFO  `$MAINTENANCE_DATE` `$MAINTENANCE_TIME`"

    if [ "${FLG_LOGOUT_START}" -eq "${FLG_ON}" -a "${FLG_ERROR_LOGOUT}" -eq "${FLG_OFF}" ]; then
        ${ECHO} "${PRINT_LOGMESSAGE_LOG_HEAD} "$1"" 2>${DEVNULL} >> "${PATH_LOGFILE}"
        if [ $? -ne 0 ]; then
            FLG_ERROR_LOGOUT="${FLG_ON}"
        fi
    fi

    return 0
}

################################################################################
## get_analysis_result
## $-: No argument
################################################################################
get_analysis_result()
{
    GET_ANALYSIS_RESULT_TMP_INSTINFO=""
    GET_ANALYSIS_RESULT_TMP_LOGOUT_LOGDIR=""
    GET_ANALYSIS_RESULT_COUNT=1

    exec 9<&0 < "${PATH_TMPFILE_ANALYSIS}" 

    while read GET_ANALYSIS_RESULT_TMP_INSTINFO 2>${DEVNULL}
    do
        case ${GET_ANALYSIS_RESULT_COUNT} in
            ${INSTALL_LOCATION_LINENUM})
                USE_INSTALL_LOCATION="${GET_ANALYSIS_RESULT_TMP_INSTINFO}"
                ;;
            ${LOGDIR_LINENUM})
                USE_LOGDIR="${GET_ANALYSIS_RESULT_TMP_INSTINFO}"
                GET_ANALYSIS_RESULT_TMP_LOGOUT_LOGDIR="${GET_ANALYSIS_RESULT_TMP_INSTINFO}"

                cleate_logfile

                if [ "${FLG_RESULT_NOTOUT}" -eq "${FLG_ON}" ]; then
                    break
                fi

                KAPL09179_LOCATION_NO="004"
                print_messages "KAPL09179" "${KAPL09179_LOCATION_NO}" "installfile_location = ${USE_INSTALL_LOCATION}"

                KAPL09179_LOCATION_NO="005"
                print_messages "KAPL09179" "${KAPL09179_LOCATION_NO}" "logdir = ${GET_ANALYSIS_RESULT_TMP_LOGOUT_LOGDIR}"
                ;;
            ${LICENSE_KEYFILE_LINENUM})
                USE_LICENSE_KEYFILE="${GET_ANALYSIS_RESULT_TMP_INSTINFO}"

                KAPL09179_LOCATION_NO="006"
                print_messages "KAPL09179" "${KAPL09179_LOCATION_NO}" "licensekeyfile = ${USE_LICENSE_KEYFILE}"
                ;;
            ${LICENSE_KEY_LINENUM})
                ## AIX Only ##
                ## skip blank line ##
                ;;
            "${DRIVER_CONFIG_LINENUM}")
                USE_DRIVER_CONFIG="${GET_ANALYSIS_RESULT_TMP_INSTINFO}"

                KAPL09179_LOCATION_NO="007"
                print_messages "KAPL09179" "${KAPL09179_LOCATION_NO}" "driver_config = ${USE_DRIVER_CONFIG}"
                ;;
            "${RESTART_LINENUM}")
                USE_RESTART="${GET_ANALYSIS_RESULT_TMP_INSTINFO}"

                KAPL09179_LOCATION_NO="008"
                print_messages "KAPL09179" "${KAPL09179_LOCATION_NO}" "restart = ${USE_RESTART}"
                ;;
            *)

                KAPL09179_LOCATION_NO="009"
                print_messages "KAPL09179" "${KAPL09179_LOCATION_NO}" "${GET_ANALYSIS_RESULT_TMP_INSTINFO}"
                ;;
        esac

        GET_ANALYSIS_RESULT_COUNT=`expr ${GET_ANALYSIS_RESULT_COUNT} + 1`

    done

    exec 0<&9 9<&-

    return 0
}

################################################################################
## Environmental check for dlmsetconf or reboot 
## $-: No argument
################################################################################
read_yesno()
{
    READ_YESNO_TYPE=$1
    READ_YESNO_VALUE=$2

    case $READ_YESNO_VALUE in
        y|Y)
            if [ "${READ_YESNO_TYPE}" -eq "${DRIVER_CONFIG_LINENUM}" ]; then

                ## upgrade install ##
                if [ "${FLG_UPDATEINSTALL}" -eq "${FLG_ON}" ]; then
                    FLG_DLMSETCONF="${FLG_OFF}"
                else
                    FLG_DLMSETCONF="${FLG_ON}"
                fi

            elif [ "${READ_YESNO_TYPE}" -eq "${RESTART_LINENUM}" ]; then

                FLG_RESTART="${FLG_ON}"

                ## upgrade install ##
                if [ "${FLG_UPDATEINSTALL}" -eq "${FLG_ON}" ]; then
                    ## reboot ##
                    FLG_RESTART_UPDATEINSTALL="${FLG_ON}"
                else
                    ## reboot -- -r ##
                    FLG_RESTART_NEWINSTALL="${FLG_ON}"
                fi
            fi
            ;;
        n|N)
            if [ "${READ_YESNO_TYPE}" -eq "${DRIVER_CONFIG_LINENUM}" ]; then
                FLG_DLMSETCONF=${FLG_OFF}
            elif [ "${READ_YESNO_TYPE}" -eq "${RESTART_LINENUM}" ]; then
                FLG_RESTART=${FLG_OFF}
            fi
            ;;
    esac

    return 0
}

################################################################################
## decision_analysis_result
## $-: No argument
################################################################################
decision_analysis_result()
{
    DECISION_ANALYSIS_RESULT_RTN=0

    ## install location  ##
    if [ -n "${USE_INSTALL_LOCATION}" ]; then

        if [ ! -d "${USE_INSTALL_LOCATION}" ]; then
            print_messages "KAPL09234" "${USE_INSTALL_LOCATION}"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

    else
        USE_INSTALL_LOCATION="${DFLT_INSTALL_LOCATION}"
    fi

    ## use license kye type ##
    if [ -n "${USE_LICENSE_KEYFILE}" ]; then

        if [ ! -f "${USE_LICENSE_KEYFILE}" ]; then
            print_messages "KAPL09234" "${USE_LICENSE_KEYFILE}"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

    else
        if [ ! -f "${DFLT_LICENSE_KEYFILE}" ]; then

            if [ "${FLG_NEWINSTALL}" -eq "${FLG_ON}" ]; then
                print_messages "KAPL09114"
                exit_deltmpfile "${ERRER_RETURN_VALUE}"
            fi

            if [ "${FLG_OLD_LICENSE_VERSION}" -eq "${FLG_ON}" ]; then
                print_messages "KAPL09114"
                exit_deltmpfile "${ERRER_RETURN_VALUE}"
            fi

            USE_LICENSE_KEYFILE=""

        else
            USE_LICENSE_KEYFILE="${DFLT_LICENSE_KEYFILE}"
        fi
    fi

    ## driver config ##
    if [ -z "${USE_DRIVER_CONFIG}" ]; then
        USE_DRIVER_CONFIG="${DFLT_DRIVER_CONFIG}"
    fi

    read_yesno "${DRIVER_CONFIG_LINENUM}" "${USE_DRIVER_CONFIG}"

    ## reboot ##
    if [ -z "${USE_RESTART}" ]; then
        USE_RESTART="${DFLT_RESTART}"
    fi

    read_yesno "${RESTART_LINENUM}" "${USE_RESTART}"

    return 0
}

################################################################################
## get_analysis_massege
## $-: No argument
################################################################################
get_analysis_massege()
{
    GET_ANALYSIS_MASSEGE_TMP_INSTINFO=""

    exec 9<&0 < "${PATH_TMPFILE_MESSAGE}"

    while read GET_ANALYSIS_MASSEGE_TMP_INSTINFO 2>${DEVNULL}
    do
        print_logmessage "${GET_ANALYSIS_MASSEGE_TMP_INSTINFO}"
    done

    exec 0<&9 9<&-

    if [ "${FLG_ERRER_TMPOUT}" -eq "${FLG_ON}" -a "${FLG_ERROR_LOGOUT}" -eq "${FLG_OFF}" ]; then
        ${ECHO} "" 2>${DEVNULL} >> "${PATH_LOGFILE}"
    fi

    return 0
}

################################################################################
## print_command
## $1: print out massege
## Return value: 0
################################################################################
print_command()
{
    PRINT_COMMAND_TMP_COMMAND=$1
    PRINT_COMMAND_RTN=0

    if [ "${FLG_ERROR_LOGOUT}" -eq "${FLG_ON}" ]; then
        echo "${PRINT_COMMAND_TMP_COMMAND}"
    else
        echo "${PRINT_COMMAND_TMP_COMMAND}" 2>&1 | tee -a "${PATH_LOGFILE}" 2>${DEVNULL}
        PRINT_COMMAND_RTN=$?
    fi

    if [ "${PRINT_COMMAND_RTN}" -ne 0 ]; then
        FLG_ERROR_LOGOUT=${FLG_ON}
    fi

    return 0
}

################################################################################
## print_messages
## $1  : KAPLXXXXX
## $2-*: various
################################################################################
print_messages()
{
    PRINT_MESSAGES_TMP_MESSEGE=""
    PRINT_MESSAGES_TMP_PRINT=""

    case "$1" in
        'KAPL09114')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09114-I There is no license key file. File name = ${DFLT_LICENSE_KEYFILE}"
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09179')
            ## The message only for logs ##
            PRINT_MESSAGES_TMP_PRINT="001""$2"
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09179-I Data for maintenance : ${PRINT_MESSAGES_TMP_PRINT} $3"
            ;;
        'KAPL09183')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09183-I HDLM version ${OLD_FILESET_VER} is installed. This version will now be overwritten with version ${NEW_FILESET_VER}."
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09187')
            ${ECHO} "KAPL09187-W No parameter is specified."
            ;;
        'KAPL09188')
            ${ECHO} "KAPL09188-W Too many parameters are specified."
            ;;
        'KAPL09190')
            ${ECHO} "KAPL09190-W The installation information settings file is not specified."
            ;;
        'KAPL09191')
            ${ECHO} "KAPL09191-W The installation information settings file does not exist."
            ;;
        'KAPL09210')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09210-I "$2" will now start."
            if [ "${FLG_LOGOUT_START}" -eq "${FLG_OFF}" -o "$2" != "${NAME_INSTHDLM}" ]; then
                ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            fi
            ;;
        'KAPL09211')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09211-I "$2" completed successfully."
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09212')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09212-E "$2" ended abnormally."
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09213')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09213-W An error occurred during "$2" processing."
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09214')
            ${ECHO} "KAPL09214-W A parameter is invalid. parameter = $2"
            ;;
        'KAPL09215')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09215-E The system environment is invalid. Error Code = $2"
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09217')
            ${ECHO} "KAPL09217-E An error occurred during reading of the installation information settings file. Error Code = $2,$3"
            ;;
        'KAPL09218')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09218-E $2 cannot be executed."
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09219')
            ${ECHO} "KAPL09219-E An internal error occurred in the installhdlm_analysis. Error Code = $2,$3"
            ;;
        'KAPL09234')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09234-W A folder or file specified by the installation information settings file does not exist. Name = $2"
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09235')
            ${ECHO} "KAPL09235-E The log file cannot be output to its destination because the environment is invalid. Error Code = $2"
            ;;
        'KAPL09236')
            ${ECHO} "KAPL09236-W An error occurred during the output of a log file."
            ;;
        'KAPL09238')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09238-W The specified file is not a normal one. File name = $2"
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'KAPL09239')
            PRINT_MESSAGES_TMP_MESSEGE="KAPL09239-I The system will now restart."
            ${ECHO} "${PRINT_MESSAGES_TMP_MESSEGE}"
            ;;
        'define')
            ;;
    esac

    print_logmessage "${PRINT_MESSAGES_TMP_MESSEGE}"

    return 0
}

################################################################################
## Check new or update install and installed HDLM version
## $-: No argument
hdlm_installtype_check()
{
    pkgparam "${PKG}" >${DEVNULL} 2>&1

    if [ $? -eq 0 ]; then
        FLG_UPDATEINSTALL="${FLG_ON}"
    else
        FLG_NEWINSTALL="${FLG_ON}"
    fi

    if [ "${FLG_UPDATEINSTALL}" -eq "${FLG_ON}" ]; then
        PRE_HDLM_VERSION=`pkgparam "${PKG}" OLD_FORMAT`

        if [ -z "${PRE_HDLM_VERSION}" ]; then
            PRE_HDLM_VERSION=`pkgparam "${PKG}" VERSION`
        fi

        ## for message ##
        OLD_FILESET_VER=`pkgparam "${PKG}" VERSION`

    fi

    PRE_HDLM_MAJOR=`${ECHO} "${PRE_HDLM_VERSION}" | /bin/awk -F"-" '{print $1}'`

    PRE_HDLM_MINOR=`${ECHO} "${PRE_HDLM_VERSION}" | /bin/awk -F"-" '{print $2}'`

    PRE_VERSION=${PRE_HDLM_MAJOR}${PRE_HDLM_MINOR}

    if [ "${PRE_VERSION}" -lt "${LIC_SPT_VER2}" ]; then
        ##installed HDLM VERSION is earlier than 05-40 ##
        FLG_OLD_LICENSE_VERSION=${FLG_ON}
    fi

    return 0
}

################################################################################
## print_usage
## $*: No argument
################################################################################
print_usage()
{
    ## installation information settings file ##
    PRINT_USAGE_INST_INFO_SETFILE="installation_information_settings_file"
    ${ECHO} "Usage :installhdlm { "$PARAM_F" "$PRINT_USAGE_INST_INFO_SETFILE" | "$PARAM_H" }"

    return 0
}

################################################################################
## Installation infomation settings file check
## $1:Installation infomation settings file name
################################################################################
installinfo_setfile_check()
{

    if [ ! -f "${PATH_INSTALLSET_FILE}" ]; then
        print_messages "KAPL09191" "${PATH_INSTALLSET_FILE}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    if [ ! -r "${PATH_INSTALLSET_FILE}" ]; then
        print_messages "KAPL09217" "${POSI_NUM_9001}" "${ERR_RTN}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ANALYSIS_ARG_1="${PATH_INSTALLSET_FILE}"

    return 0
}

################################################################################
## The check of installhdlm execution environment
## $-: No argument
################################################################################
create_tmpfiles()
{
    ## Existence check PATH_TMPFILE_DIR ##
    if [ ! -d "${PATH_TMPFILE_DIR}" ]; then
        print_messages "KAPL09215" "${NOT_TMPDIR}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ## PATH_TMPFILE_DIR write check ##
    if [ ! -w "${PATH_TMPFILE_DIR}" ]; then
        print_messages "KAPL09215" "${TMPDIR_NOT_WRITE}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ## Create tmp file(Analysis) ##
    ${TOUCH} "${PATH_TMPFILE_ANALYSIS}" >${DEVNULL} 2>&1
    if [ $? -ne 0 ]; then
        print_messages "KAPL09215" "${TMPFILESYSTEM_NOT_WRITE}"
        ${RM} -f "${PATH_TMPFILE_ANALYSIS}" >${DEVNULL} 2>&1
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ## Create tmp file(Message) ##
    ${TOUCH} "${PATH_TMPFILE_MESSAGE}" >${DEVNULL} 2>&1
    if [ $? -ne 0 ]; then
        print_messages "KAPL09215" "${TMPFILESYSTEM_NOT_WRITE}"
        ${RM} -f "${PATH_TMPFILE_ANALYSIS}" >${DEVNULL} 2>&1
        ${RM} -f "${PATH_TMPFILE_MESSAGE}" >${DEVNULL} 2>&1
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    return 0
}

################################################################################
## cleate_logfile
## $-: No argument
################################################################################
cleate_logfile()
{
    CLEATE_LOGFILE_RTN=0

    if [ -z "${USE_LOGDIR}" ]; then
        USE_LOGDIR="${DFLT_LOGDIR}"
    fi

    ## Existence check PATH_TMPFILE_DIR ##
    if [ ! -d "${USE_LOGDIR}" ]; then
        print_messages "KAPL09235" "${NOT_LOGDIR}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ## Log directory write check ##
    if [ ! -w "${USE_LOGDIR}" ]; then
        print_messages "KAPL09235" "${LOGDIR_NOT_WRITE}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    PATH_LOGFILE="${USE_LOGDIR}/${NAME_LOGFILE}"

    ${LS} "${PATH_LOGFILE}" >${DEVNULL} 2>&1
    CLEATE_LOGFILE_RTN=$?

    if [ "${CLEATE_LOGFILE_RTN}" -eq 0 ]; then

        if [ ! -f "${PATH_LOGFILE}" ]; then
            print_messages "KAPL09238" "${PATH_LOGFILE}"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

        if [ ! -w "${PATH_LOGFILE}" ]; then
            print_messages "KAPL09235" "${LOGFILE_NOT_WRITE}"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

    fi

    ${TOUCH} "${PATH_LOGFILE}" >${DEVNULL} 2>&1
    CLEATE_LOGFILE_RTN=$?
    if [ "${CLEATE_LOGFILE_RTN}" -ne 0 ]; then
        print_messages "KAPL09235" "${LOGFILESYSTM_NOT_WRITE}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    FLG_LOGOUT_START="${FLG_ON}"

    print_messages "KAPL09210" "${NAME_INSTHDLM}"

    KAPL09179_LOCATION_NO="001"
    print_messages "KAPL09179" "$KAPL09179_LOCATION_NO" "servername = ${SERVER_NAME}"

    KAPL09179_LOCATION_NO="002"
    print_messages "KAPL09179" "$KAPL09179_LOCATION_NO" "-f = ${PATH_INSTALLSET_FILE}"

    KAPL09179_LOCATION_NO="003"
    print_messages "KAPL09179" "$KAPL09179_LOCATION_NO" "hdlmversion = ${NEW_FILESET_VER}"

    return 0
}

################################################################################
## cleate_flg_file_silent_install
## $-: No argument
################################################################################
cleate_flg_file_silent_install()
{
    ## Existence check PATH_TMPFILE_DIR ##
    if [ ! -d "${PATH_TMPFILE_DIR}" ]; then
        print_messages "KAPL09215" "${NOT_TMPDIR}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ## PATH_TMPFILE_DIR write check ##
    if [ ! -w "${PATH_TMPFILE_DIR}" ]; then
        print_messages "KAPL09215" "${TMPDIR_NOT_WRITE}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ## Create tmp file(flg_file_silent_install) ##
    ${TOUCH} "${PATH_FLG_FILE_SILENT_INSTALL}" >${DEVNULL} 2>&1
    if [ $? -ne 0 ]; then
        print_messages "KAPL09215" "${TMPFILESYSTEM_NOT_WRITE}"
        ${RM} -f "${PATH_FLG_FILE_SILENT_INSTALL}" >${DEVNULL} 2>&1
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    return 0

}

################################################################################
## installhdlm_analysis execution
## $-: No argument
################################################################################
installhdlm_analysis_exe()
{
    INSTALLHDLM_ANALYSIS_EXE_RTN=0
    
    if [ -x "${PATH_ANALYSIS}" ]; then
        ## Execute installhdlm_analysis ##
        "${PATH_ANALYSIS}" "${ANALYSIS_ARG_1}" "${ANALYSIS_ARG_2}" "${ANALYSIS_ARG_3}"
        INSTALLHDLM_ANALYSIS_EXE_RTN=$?

        case "${INSTALLHDLM_ANALYSIS_EXE_RTN}" in
            "${NORMAL_RETURN}")
                FLG_ERRER_TMPOUT=${FLG_OFF}
                FLG_RESULT_NOTOUT=${FLG_OFF}

                get_analysis_result
                decision_analysis_result
                print_command ""

                ;;
            "${ERR_RETURN_LOGOUT}")
                ## Normal log out ##
                FLG_ERRER_TMPOUT=${FLG_OFF}
                FLG_RESULT_NOTOUT=${FLG_ON}

                get_analysis_result
                get_analysis_massege

                exit_deltmpfile "${ERRER_RETURN_VALUE}"
                ;;
            "${ERR_RETURN_ELOGOUT}")
                ## Error log out ##
                FLG_ERRER_TMPOUT=${FLG_ON}
                FLG_RESULT_NOTOUT=${FLG_ON}

                get_analysis_result
                get_analysis_massege

                exit_deltmpfile "${ERRER_RETURN_VALUE}"
                ;;
            "${ERR_RETURN_NOT_LOGOUT}")
                ## A log cannot be taken out. ##
                exit_deltmpfile "${ERRER_RETURN_VALUE}"
                ;;
            *)
                ## installhdlm_analysis catch signal ##
                print_messages "KAPL09219" "${POSI_NUM_9002}" "${ERR_RTN}"
                exit_deltmpfile "${ERRER_RETURN_VALUE}"
                ;;
        esac
    else
        print_messages "KAPL09218" "${NAME_ANALYSIS}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    return 0
}

################################################################################
## copy_licensekey file
## $1 USE_LICENSE_KEYFILE
## $2 DFLT_LICENSE_KEYFILE
################################################################################
copy_licensekey()
{
    COPY_LICENSEKEY_COPYIN_LICENSEKEY="$1"
    COPY_LICENSEKEY_COPYOUT_LICENSEKEY="$2"
    COPY_LICENSEKEY_COPYOUT_FILENAME=""
    COPY_LICENSEKEY_COPYOUT_DIRNAME=""

    if [ "${COPY_LICENSEKEY_COPYIN_LICENSEKEY}" = "${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}" ]; then
        COPY_LICENSEKEY_COPYOUT_LICENSEKEY="${TMPFILE_COPYOUT_LICENSEKEY}"
    fi

    COPY_LICENSEKEY_COPYOUT_FILENAME=`${BASENAME} ${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}`
    COPY_LICENSEKEY_COPYOUT_DIRNAME=`${DIRNAME} ${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}`

    if [ ! -d "${COPY_LICENSEKEY_COPYOUT_DIRNAME}" ]; then
        print_messages "KAPL09215" ${NOT_TMPDIR}
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    if [ ! -w "${COPY_LICENSEKEY_COPYOUT_DIRNAME}" ]; then
        print_messages "KAPL09215" ${TMPDIR_NOT_WRITE}
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ${TOUCH} "${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}" >${DEVNULL} 2>&1
    if [ $? -ne 0 ]; then
        ${RM} "${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}" >${DEVNULL} 2>&1
        print_messages "KAPL09215" "${TMPFILESYSTEM_NOT_WRITE}"
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    ${CP} -p "${COPY_LICENSEKEY_COPYIN_LICENSEKEY}" "${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}" >${DEVNULL} 2>&1
    if [ $? -ne 0 ]; then
        ${RM} "${COPY_LICENSEKEY_COPYOUT_LICENSEKEY}" >${DEVNULL} 2>&1
        print_messages "KAPL09215" ${LICENSEDIR_NOT_CAPACITY}
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    return 0
}

################################################################################
## install HDLM
## $-: No argument
################################################################################
installation_hdlm()
{

    if [ -n "${USE_LICENSE_KEYFILE}" ]; then

        if [ -f "${USE_LICENSE_KEYFILE}" ]; then
            copy_licensekey "${USE_LICENSE_KEYFILE}" "${DFLT_LICENSE_KEYFILE}"

            if [ $? -ne 0 ]; then
                print_messages "KAPL09215" ${LICENSEDIR_NOT_CAPACITY}
                exit_deltmpfile "${ERRER_RETURN_VALUE}"
            fi

        fi

    else

        if [ "${FLG_NEWINSTALL}" -eq "${FLG_ON}" ]; then
            print_messages "KAPL09114"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

        if [ "${FLG_OLD_LICENSE_VERSION}" -eq "${FLG_ON}" ]; then
            print_messages "KAPL09114"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

    fi

    ## pkgadd ##
    print_messages "KAPL09210" "${NAME_PKGADD}"

    if [ "${FLG_UPDATEINSTALL}" -eq "${FLG_ON}" ]; then
        print_messages "KAPL09183"
    fi

    cleate_flg_file_silent_install

    if [ "${FLG_NEWINSTALL}" -eq "${FLG_ON}" ]; then
        "${NAME_PKGADD}" -a "${USE_INSTALL_LOCATION}/${NETMDM_DIR}/${NETMDM_NEWINSTALL_FILE}" -d "${USE_INSTALL_LOCATION}" "${PKG}"
         RTN=$?
    elif [ "${FLG_UPDATEINSTALL} -eq ${FLG_ON}" ]; then
        "${NAME_PKGADD}" -a "${USE_INSTALL_LOCATION}/${NETMDM_DIR}/${NETMDM_UPDATEINSTALL_FILE}" -d "${USE_INSTALL_LOCATION}" "${PKG}"
        RTN=$?
    fi

    ## license key maintenance ##
    if [ -n "${USE_LICENSE_KEYFILE}" ]; then
        ${RM} "${DFLT_LICENSE_KEYFILE}" >${DEVNULL} 2>&1
        if [ -f "${TMPFILE_COPYOUT_LICENSEKEY}" ]; then
            ${CP} -p "${TMPFILE_COPYOUT_LICENSEKEY}" "${DFLT_LICENSE_KEYFILE}" >${DEVNULL} 2>&1
            ${RM} "${TMPFILE_COPYOUT_LICENSEKEY}" >${DEVNULL} 2>&1
        fi
    fi

    if [ "${RTN}" -eq 0 ]; then
        print_messages "KAPL09211" "${NAME_PKGADD}"
        print_command ""
    else
        print_messages "KAPL09212" "${NAME_PKGADD}"
        print_command ""
        exit_deltmpfile "${ERRER_RETURN_VALUE}"
    fi

    return 0

}

################################################################################
## hdlm_settings
## $-: No argument
################################################################################
hdlm_settings()
{

    HDLM_SETTINGS_TMP_INSTINFO=""
    HDLM_SETTINGS_TMP_DLNKMGR_COMMAND=""
    HDLM_SETTINGS_TMP_DLNKMGR_PARAMETER=""
    HDLM_SETTINGS_TMP_RESULT=""
    HDLM_SETTINGS_COUNT=1
    HDLM_SETTINGS_SETTING_COUNT=6

    HDLM_SETTINGS_FLG_DLNKMGR=${FLG_OFF}
    HDLM_SETTINGS_FLG_DLNKMGR_ERROR=${FLG_OFF}

    HDLM_SETTINGS_TMP_MGRPS=""
    HDLM_SETTINGS_CNT=20

    ## dlmsetconf command ##
    if [ "${FLG_DLMSETCONF}" -eq "${FLG_ON}" ]; then
        if [ ! -x ${PATH_DLMSETCONF} ]; then
            print_messages "KAPL09215" "${NOT_SETCONF}"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi
        print_messages "KAPL09210" "${NAME_SETCONF}"
        print_command "# "${PATH_DLMSETCONF}""

        ${ECHO} "y" | ${PATH_DLMSETCONF} >>"${PATH_LOGFILE}" 2>&1

        if [ $? -ne 0 ]; then
            print_messages "KAPL09213" "${NAME_SETCONF}"
            print_command ""
            FLG_ERROR_PROCESSING=${FLG_ON}
        else
            print_messages "KAPL09211" "${NAME_SETCONF}"
            print_command ""
        fi
    fi

    exec 9<&0 < "${PATH_TMPFILE_ANALYSIS}"

    while read HDLM_SETTINGS_TMP_INSTINFO 2>${DEVNULL}
    do
        if [ "${HDLM_SETTINGS_COUNT}" -le "${HDLM_SETTINGS_SETTING_COUNT}" ]; then
            HDLM_SETTINGS_COUNT=`expr ${HDLM_SETTINGS_COUNT} + 1`
            continue
        fi

        ## dlnkmgr command  
        ${ECHO} "${HDLM_SETTINGS_TMP_INSTINFO}" | ${GREP} -w "${PATH_DLNKMGR}" >${DEVNULL} 2>&1

        if [ $? -eq 0 ]; then
            if [ "${HDLM_SETTINGS_FLG_DLNKMGR}" -eq "${FLG_OFF}" ]; then

                if [ ! -x "${PATH_DLMMGR}" -o ! -x "${PATH_DLNKMGR}" ]; then
                    print_messages "KAPL09218" "${NAME_DLNKMGR}"
                    exit_deltmpfile "${ERRER_RETURN_VALUE}"
                fi

                ${DLMMGR_START} >${DEVNULL} 2>&1 &
                HDLM_SETTINGS_FLG_DLNKMGR=`${PS} -e 2>${DEVNULL} | ${GREP} -w dlmmgr 2>${DEVNULL} | ${GREP} -v ${GREP} 2>${DEVNULL} | wc -l 2>${DEVNULL}`
                if [ ${HDLM_SETTINGS_FLG_DLNKMGR} = 0 ]; then
                    HDLM_SETTINGS_CNT=20
                    while [ ${HDLM_SETTINGS_CNT} -gt 0 ]
                    do
                        HDLM_SETTINGS_FLG_DLNKMGR=`${PS} -e 2>${DEVNULL} | ${GREP} -w dlmmgr 2>${DEVNULL} | ${GREP} -v grep 2>${DEVNULL} | wc -l 2>${DEVNULL}`
                        if [ ${HDLM_SETTINGS_FLG_DLNKMGR} = 0 ]; then
                            HDLM_SETTINGS_CNT=`expr $HDLM_SETTINGS_CNT - 1`
                            sleep 1
                        else
                            break
                        fi
                    done
                fi

                sleep 5

                HDLM_SETTINGS_FLG_DLNKMGR=${FLG_ON}
                print_messages "KAPL09210" "${NAME_DLNKMGR}"
            fi

            print_command "# ${HDLM_SETTINGS_TMP_INSTINFO}"

            HDLM_SETTINGS_TMP_DLNKMGR_COMMAND=`${ECHO} "${HDLM_SETTINGS_TMP_INSTINFO}" | cut -d " " -f 1,2`
            HDLM_SETTINGS_TMP_DLNKMGR_PARAMETER=`${ECHO} "${HDLM_SETTINGS_TMP_INSTINFO}" | cut -d " " -f 3-`
            HDLM_SETTINGS_TMP_INSTINFO="$HDLM_SETTINGS_TMP_DLNKMGR_COMMAND -nodrv $HDLM_SETTINGS_TMP_DLNKMGR_PARAMETER"
            HDLM_SETTINGS_TMP_RESULT=`${HDLM_SETTINGS_TMP_INSTINFO}`
            if [ $? -ne 0 ]; then
                FLG_ERROR_PROCESSING=${FLG_ON}
                HDLM_SETTINGS_FLG_DLNKMGR_ERROR=${FLG_ON}
            fi

            print_command "${HDLM_SETTINGS_TMP_RESULT}"

        fi
    done

    exec 0<&9 9<&-

    ## dlnkmgr command end ##
    if [ "${HDLM_SETTINGS_FLG_DLNKMGR}" -eq "${FLG_ON}" ]; then
        HDLM_SETTINGS_FLG_DLNKMGR=`${PS} -e 2>${DEVNULL} | ${GREP} -w dlmmgr 2>${DEVNULL} | ${GREP} -v grep 2>${DEVNULL} | wc -l 2>${DEVNULL}`
        if [ ${HDLM_SETTINGS_FLG_DLNKMGR} != 0 ]; then
            ${DLMMGR_STOP} >${DEVNULL} 2>&1
            HDLM_SETTINGS_CNT=20
            while [ ${HDLM_SETTINGS_CNT} -gt 0 ]
            do
                HDLM_SETTINGS_FLG_DLNKMGR=`${PS} -e 2>${DEVNULL} | ${GREP} -w dlmmgr 2>${DEVNULL} | ${GREP} -v ${GREP} 2>${DEVNULL} | wc -l 2>${DEVNULL}`
                if [ ${HDLM_SETTINGS_FLG_DLNKMGR} != 0 ]; then
                    HDLM_SETTINGS_CNT=`expr $HDLM_SETTINGS_CNT - 1`
                    sleep 1
                else
                    break
                fi
            done
        fi

        if [ "${HDLM_SETTINGS_FLG_DLNKMGR_ERROR}" -eq "${FLG_ON}" ]; then
            print_messages "KAPL09213" "${NAME_DLNKMGR}"
        else
            print_messages "KAPL09211" "${NAME_DLNKMGR}"
        fi
        print_command ""
        HDLM_SETTINGS_FLG_DLNKMGR=${FLG_OFF}
    fi

    return 0

}

################################################################################
## reboot_host
## $-: No argument
################################################################################
reboot_host()
{

    if [ "${FLG_RESTART}" -eq "${FLG_ON}" ]; then
        if [ ! -x ${REBOOT} ]; then
            print_messages "KAPL09215" "${NOT_REBOOT}"
            exit_deltmpfile "${ERRER_RETURN_VALUE}"
        fi

        if [ "${FLG_ERROR_PROCESSING}" -eq "${FLG_OFF}" ]; then
            print_messages "KAPL09211" "${NAME_INSTHDLM}"
        else
            print_messages "KAPL09213" "${NAME_INSTHDLM}"
        fi

        print_command ""
        print_messages "KAPL09239"

        if [ "${FLG_NEWINSTALL}" -eq "${FLG_ON}" ]; then
            print_command "# reboot -- -r"
        elif [ "${FLG_UPDATEINSTALL}" -eq "${FLG_ON}" ]; then
            print_command "# reboot"
        fi

        print_command ""

        if [ "${FLG_COPYLOG}" -eq "${FLG_ON}" ]; then
            ${CP} -p "${PATH_LOGFILE}" "${PATH_DLMLOGDIR}"  2>${DEVNULL}
        fi

        ${RM} -f "${PATH_TMPFILE_ANALYSIS}" >${DEVNULL} 2>&1
        ${RM} -f "${PATH_TMPFILE_MESSAGE}" >${DEVNULL} 2>&1
        ${RM} -f "${PATH_FLG_FILE_SILENT_INSTALL}" >${DEVNULL} 2>&1

        if [ "${FLG_NEWINSTALL}" -eq "${FLG_ON}" ]; then
            ${REBOOT} -- -r
        elif [ "${FLG_UPDATEINSTALL}" -eq "${FLG_ON}" ]; then
            ${REBOOT}
        fi

        exit 1
    fi

    return 0
}

################################################################################
## Main function start
################################################################################

PARAM_NUM="$#"
PATH_DLMSET="$0"

## set permission mask ##
umask 077 >${DEVNULL} 2>&1

## installhdlm path check ##
PATH_INSTHDLM=`${DIRNAME} ${PATH_DLMSET}`

if [ -z "${PATH_INSTHDLM}" ]; then
    PATH_HDLMTOOL="./"
else
    PATH_HDLMTOOL="${PATH_INSTHDLM}"
fi

PATH_ANALYSIS="${PATH_HDLMTOOL}/${NAME_ANALYSIS}"

if [ "${PARAM_NUM}" -eq 0 ]; then
    print_messages "KAPL09187"
    exit "${ERRER_RETURN_VALUE}"
elif [ "${PARAM_NUM}" -ge 3 ]; then
    print_messages "KAPL09188"
    exit "${ERRER_RETURN_VALUE}"
fi

## Parameter Check ##
while [ "${COUNTER}" -le "${PARAM_NUM}" ];
do
    case $1 in
        "${PARAM_F}")
            FLG_FILE=${FLG_ON}

            if [ "$COUNTER" -eq "$PARAM_NUM" ]; then
                print_messages "KAPL09190"
                exit "${ERRER_RETURN_VALUE}"
            fi

            shift
            COUNTER=`expr $COUNTER + 1`
            PATH_INSTALLSET_FILE="$1"
            ;;
        "$PARAM_H")
            if [ "${FLG_HELP}" -eq "${FLG_ON}" ]; then
                print_messages "KAPL09214" "$PARAM_H,$1"
                exit "${ERRER_RETURN_VALUE}"
            fi

            FLG_HELP=${FLG_ON}
            ;;
        *)
            if [ "$COUNTER" -ne 1 ]; then
                print_messages "KAPL09214" "$PARAM_H,$1"
                exit "${ERRER_RETURN_VALUE}"
            fi

            print_messages "KAPL09214" "$1"
            exit "${ERRER_RETURN_VALUE}"
            ;;
    esac

    shift

    COUNTER=`expr $COUNTER + 1`
done

## FLG_HELP Check ##
if [ "${FLG_HELP}" -eq "${FLG_ON}" ]; then
    print_usage
    exit "${NORMAL_RETURN_VALUE}"
fi

## installhdlm start message ##
print_messages "KAPL09210" "${NAME_INSTHDLM}"

## The check of Installation setting infomation file ##
installinfo_setfile_check "${PATH_INSTALLSET_FILE}"

## Installed HDLM version is checked. ##
hdlm_installtype_check

## The check of installhdlm execution environment ##
create_tmpfiles

## installhdlm_analysis execution ##
installhdlm_analysis_exe

## HDLM installation ##
installation_hdlm

FLG_COPYLOG=${FLG_ON}

## dlmsetconf dlnkmgr and cfgmgr ##
hdlm_settings

## reboot host ##
reboot_host

exit_deltmpfile "${NORMAL_RETURN_VALUE}"