Current File : //usr/ddu/scripts/file_check.sh
#!/bin/ksh93
#
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
#
# Description: Calling load_driver.sh or 3rd_drv_ins.sh to install the driver
#              package based on the package type, file name and file path.
#
#              Usage:
#              file_check.sh pkg_type file_name file_path Root_path
#              $1 is package type (IPS, SVR4, DU, UNK and P5I)
#              $2 is file name
#              (it can be *, ne file name, multi file names separated by comma.) 
#              $3 is file path(it can be the local dir, http/ftp url)
#              $4 is root path for the package. it's optional.

PATH=/usr/bin:/usr/sbin:$PATH; export PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/ddu/lib; export LD_LIBRARY_PATH

typeset -r base_dir=$(dirname $0)
typeset    file_path
typeset -i num

#
# Confirm the correct number of commnad line argument
#
if (( $# < 3 )) || (( $# > 4 )); then
    print -u2 "\n$0: Wrong number of arguments provided..."
    exit 1
fi

#
# Validate the arguments
#

case $1 in
IPS | DU | SVR4 | P5I | UNK);;
*) print -u2 "\n... $0: $1 is not a valid package type."; exit 1;;
esac

if [ ! -z $4 ]; then
    if [ ! -d $4 ]; then
        print -u2 "\n... $0: $4 specified is not a valid path."
        exit 1
    fi
fi



#
#file_path can't be null
#
if [ -z "$3" ]; then
    print -u2 "$0: File path can't be null!"
    exit 1
fi

if [[ ! -x ${base_dir}/load_driver.sh ]]; then
    print -u2 "$0: ${base_dir}/load_driver.sh not found."
    exit 1
fi

#
#IPS
#
if [ "$1" == "IPS" ]; then
    ${base_dir}/load_driver.sh "$1" "$2" "$3" "$4"
    if [ $? -ne 0 ]; then
        #
        # Install Failed!
        #
        print -u2 "$0: Error executing: " \
            "${base_dir}/load_driver.sh $1 $2 $3 $4"
        exit 1
    else
        #
        # Install Successful!
        #
        exit 0
    fi
fi

#
#URL
#
#
#Check URL format
#
echo "$3" | egrep -e \
    "((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))[\w\d:#%/;$()~_?\\-=\\\.&]*)" \
    >/dev/null 2>&1
if [ $? -eq 0 ]; then
    if [[ ! -x ${base_dir}/3rd_drv_ins.sh ]]; then
        print -u2 "$0: ${base_dir}/3rd_drv_ins.sh not found."
        exit 1
    fi
    ${base_dir}/3rd_drv_ins.sh "$1" "$3/$2" "$4"
    if [ $? -ne 0 ]; then
        #
        # Install Failed!
        #
        print -u2 "$0: Error executing: " \
            "${base_dir}/3rd_drv_ins.sh $1 $3/$2 $4"
        exit 1
    else
        #
        # Install Successful!
        #
        exit 0
    fi
fi

#
#Local dir
#
cd "$3"
file_path="$3"
if [ "$2" == "*" ]; then
    num=1
    #
    # Set carriage return to IFS
    #
    IFS='
'
    for i in $(ls -d -1 * 2>/dev/null); do
        file_name[$num]=$i
        num=$(($num + 1))
    done
elif [ ! -z $(echo $2 | grep ',') ]; then
    num=1
    while :; do
        file_name[$num]=$(echo $2 | cut -d, -f$num | awk '{print $1}')
        if [ -z ${file_name[$num]} ]; then
            break
        fi 
        num=$(($num + 1))
    done
else
    num=1
    file_name[$num]="$2"
fi

err_flag=0

num=1
if [ -z "${file_name[$num]}" ]; then
    ${base_dir}/load_driver.sh "$1" "${file_path}/${file_name[$num]}" "$4"
    if [ $? -ne 0 ]; then
        #
        # Load driver failed
        #
        err_flag=1
    fi
fi
while [ ! -z ${file_name[$num]} ]; do
    ${base_dir}/load_driver.sh "$1" "${file_path}/${file_name[$num]}" "$4"
    if [ $? -ne 0 ]; then
        #
        # Load driver failed
        #
        err_flag=1
    fi
    num=$(($num + 1))
done
if [ $err_flag -ne 0 ]; then
    #
    # Install Failed!
    #
    print -u2 "$0: Error executing: " \
        "${base_dir}/load_driver.sh $1 $2 $3 $4"
    exit 1
else
    #
    # Install Successful!
    #
    exit 0
fi