#!/bin/ksh -p
# -----------------------------------------------------------------------------
# Copyright 1998, 1999, 2000, 2001, 2002, 2003 by Engineous Software Inc.,
# 2000 CentreGreen Way, Suite 100 Cary, NC 27513, U.S.A
# All rights reserved.
# 
# IN NO EVENT SHALL ENGINEOUS SOFTWARE INC. BE LIABLE TO ANY PARTY FOR
# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
# OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF ENGINEOUS
# SOFTWARE INC. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ENGINEOUS SOFTWARE INCORPORATED SPECIFICALLY DISCLAIMS ANY WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
# ON AN "AS IS" BASIS, AND ENGINEOUS SOFTWARE INC. HAS NO OBLIGATION TO
# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
# -----------------------------------------------------------------------------
#
PATH=/bin:/usr/bin:$PATH
export PATH

############################################################################
# getEsiArch
#   Get the architecture specification for the current machine
############################################################################
getEsiArch() 
{
    platform=`uname`
    osrel=`uname -r`
    mach=`uname -m`

    type=${platform}_${osrel} 

    err=0
    case ${type} in
        SunOS_5.*)
            if [ "`uname -p`" = "sparc" ]; then
                type=SunOS_5.8_sparc
            else
                err=1
            fi
            ;;

        HP-UX_[AB].11.*)
            if [ "${mach}" != "ia64" ]; then
                type=HP-UX_B.11.11_PA_RISC
            else
                err=1
            fi
            ;;

        AIX*)
            ver=`uname -v`
            subtype="AIX_${ver}.${osrel}"
            case ${subtype} in
                AIX_[56].*)
                    type="AIX_5.2_ppc"
                    ;;
            esac
            ;;

        Linux_2*)
            case ${mach} in
                ia64)
                    # Itanium isn't supported
                    err=1
                    ;;
                i[3-6]86)
                    # Pentium or opteron.
                    type=Linux_7.3_x86
                    ;;
                *64)
                    # 64-bit linux
                    type=Linux_x64
                    ;;
                *)
                    err=1
                    ;;
            esac
            ;;

        *)
            err=1
            ;;
    esac

    if [ "$err" = "1" ]; then
        echo "echo 'OS version <$osrel> of platform <$platform, $mach> not supported'" >&2
        exit 1
    fi

    ESI_ARCH=$type
    export ESI_ARCH
}

###############################################################################

#main() 
#{
    [ "${SH_DEBUG}" = "true" ] && set -x 

    dir=`dirname $0`
    prog=`basename $0`

    # Sets ESI_ARCH properly for the hardware and OS
    getEsiArch

    dir="${dir}/../bin"

    # On Linux_x64, if the program doesn't exist, try linux32 instead.
    if [ "$ESI_ARCH" = "Linux_x64" -a ! -f "$dir/$ESI_ARCH/$prog" ]; then
        ESI_ARCH=Linux_7.3_x86
    fi

    if [ ! -f "$dir/$ESI_ARCH/$prog" ]; then
        echo "ERROR: <$dir/$ESI_ARCH/$prog> does not exist"
    else
        exec "$dir/$ESI_ARCH/$prog" "$@"
    fi

#}
