#!/bin/sh
#
# Instructions
# ------------
# 1. Download DBMaker and manual archive file and setup file,
#    put into same temporary directory.
# 2. "./setup"
# 3. More information please visit http://www.dbmaker.com
#
#

#
# Subroutine
#
echobsd ()
{
  echo -n "$*"
}

echoiBCS2 ()
{
  echo "${*}\c"
}

if [ `echo "x\c"` = "x" ]; then
  echonl=echoiBCS2
else
  echonl=echobsd
fi

#
# Convert a possibly relative path to an absolute path
#
RelPathToAbs() {
    RELPATHTOABS_PATH=`echo "$1" | sed -e 's|//*|/|g'`
    # If path starts with "./", trim it off
    if [ "`echo $RELPATHTOABS_PATH|cut -c1-2`" = "./" -o "$RELPATHTOABS_PATH" = "." ]
    then
        RELPATHTOABS_PATH=`echo $RELPATHTOABS_PATH|cut -c3-`
    fi

    # If path relative, convert to absolute
    if [ "`echo $RELPATHTOABS_PATH|cut -c1`" != "/" ]
    then
        echo "`pwd`/$RELPATHTOABS_PATH"
    else
        echo $RELPATHTOABS_PATH
    fi
    unset RELPATHTOABS_PATH
}

#
# This function to find out $0 where it is
#
ProgRunDir() {
    RUN_DIR=$0
    while [ -h $RUN_DIR ]
    do
            LINK_PATH=`'ls' -l $RUN_DIR|sed "s/^.*-> //"`
            RUN_DIR=$LINK_PATH
    done
    # We now have the complete (but possibly relative) path to
    # ourselves.  Now convert the path to absolute, strip off the file
    # name and one directory level.
    RUN_DIR=`RelPathToAbs $RUN_DIR`
    dirname "$RUN_DIR"
}

YesNo () {
  ans=;
  DefAns=`echo $2| tr "[a-z]" "[A-Z]"| cut -c -1`
  SHOW='Y/n'
  if [ "X$DefAns" = "XN" ]; then SHOW='y/N'; fi
  if [ "X$DefAns" != "XY" -a "X$DefAns" != "XN" ]; then DefAns='Y'; fi
  while [ "X$ans" = "X" ]; do
    $echonl "$1 ($SHOW)? "
    read ans
    ans=`echo $ans| tr "[a-z]" "[A-Z]"`
    if [ "X$ans" = "X" ]; then ans=$DefAns; fi
    case $ans in
      Y|YES) ans=yes;;
      N|NO ) ans=no;;
      *)     ans=;;
    esac
  done
}

InsYesNo () {
  YesNo "Do you want to install the $1." "$2"
}

YesNoChange () {
  DefAns=`echo $1| tr "[a-z]" "[A-Z]"| cut -c -1`
  ans=yes
  if [ "$DefAns" = "Y" ]; then ans=no; fi
}

ReadKey () {
  ans=;
  while [ "X$ans" = "X" ]; do
    $echonl "$1 [ $2 ] "
    read ans
    ans=`echo $ans| tr "[a-z]" "[A-Z]"| cut -c -1`
    if [ "X$ans" = "X" ]; then ans=`echo $3| cut -c -1`; fi
    for arg in $2; do
      if [ "X$arg" = "X$ans" ]; then ans=$arg; break; fi
    done
    if [ "X$arg" != "X$ans" ]; then ans=; fi
  done
}

PATH=/usr/bin:/bin
WORKDIR=`ProgRunDir`
OS=`uname`
WHOAMI=whoami
PRODUCT_PLATFORM=Linux2.ppc64le
case $OS in
  SunOS)    PATH=$PATH:/usr/ucb ;;
  IRIX)     PATH=$PATH:/usr/bsd ;;
  SCO*)     WHOAMI=logname      ;;
  UnixWare) PATH=$PATH:/usr/ucb ;;
  MITUX)    WHOAMI=logname      ;;
esac

# Default arguments
VERSION_FULL=5.4.7
VERSION_NUM=5.4
YEAR=2025
URL='http://www.dbmaker.com'
DMTAR=dm`echo $VERSION_FULL| tr -d "."`.tar
DMTUTOR=dmtutor.tar
DMDOC=dmdoc.tar
DMJRE=jre-${PRODUCT_PLATFORM}.tar
DMAP=dmapp.tar
DMDRIVER=dmdriver.tar
HELP=$0.help
COMMONDIR='../common'
COMMONDIR_TITLE="unix/common"

# Description
APP_TITLE="DBMaker Server"
CLIENT_TITLE="DBMaker Client"
SAMPLE_TITLE="Sample Programs"
TUTOR_TITLE="Tutorial Database"
MANUAL_TITLE="Documentation"
DRIVER_TITLE="Drivers"
AP_TITLE="Applications"
MANUAL_PDF_TITLE="PDF format Documentation"
JDBATOOL_TITLE="JAVA DBATool"

# File List
LICENCE_FILE="dbmaker.lic"
APP_FILE="bin include jetty jre lib locale shared templates"
CLIENT_FILE="include lib locale templates bin/configut bin/dmppcc bin/dmppspc bin/dmsqlc \
	     bin/.dmjava_wrapper shared/codepage shared/locale"
SAMPLE_FILE="samples"
OTHER_FILE=" grammar.sql"
TUTOR_FILE="tutorial"

DOC_DIR=Doc
MANUAL_FILE0=$DOC_DIR/QuickStartGuide.pdf
MANUAL_FILE1=$DOC_DIR/tutorial.pdf
MANUAL_FILE2=$DOC_DIR/dba.pdf
MANUAL_FILE3=$DOC_DIR/sql.pdf
MANUAL_FILE4=$DOC_DIR/jdba.pdf
MANUAL_FILE5=$DOC_DIR/jsvrmgr.pdf
MANUAL_FILE6=$DOC_DIR/jconfig.pdf
MANUAL_FILE7=$DOC_DIR/dmsql.pdf
MANUAL_FILE8=$DOC_DIR/esql.pdf
MANUAL_FILE9=$DOC_DIR/odbc.pdf
MANUAL_FILE10=$DOC_DIR/error.pdf
MANUAL_FILE11=$DOC_DIR/dci.pdf
MANUAL_FILE12=$DOC_DIR/XMLTool.pdf
MANUAL_FILE13=$DOC_DIR/sqlsp.pdf
MANUAL_FILE14=$DOC_DIR/jdbc.pdf

HTML_MANUAL_FILE="$DOC_DIR/HTML"

DRIVER_JDBC_FILE="driver/JDBC"
DRIVER_PHP_FILE="driver/PHP"
DRIVER_PERL_FILE="driver/Perl"
DRIVER_PYTHON_FILE="driver/Python"

AP_ECOMMERCE_FILE="applications/ECommerce"
AP_ECMS_FILE="applications/ECMS"
AP_WEBSEARCH_FILE="applications/WebSearch"

JRE_FILE="jre"

# Option
HAVE_APP_TAR=yes
INSTALL_APP=yes
INSTALL_CLIENT=yes

PATH_APP_TITLE="DBMaker Home directory"
PATH_APP=
 MESSAGE_OPT='en_US'
 LANGUAGE_TITLE="Default create database language setting"
 DEFAULT_LANGUAGE=-1
 OPT_LANGUAGE=$DEFAULT_LANGUAGE
  LANGUAGE0_TITLE="Western"
  LANGUAGE1_TITLE="Western, Traditional Chinese (Big5)"
  LANGUAGE2_TITLE="Western, Japanese Shift JIS + Half corner (SJIS)"
  LANGUAGE3_TITLE="Western, Simplified Chinese (GB)"
  LANGUAGE4_TITLE="Western, Latin1 code (ISO-8859-1)"
  LANGUAGE5_TITLE="Western, Latin2 code (ISO-8859-2)"
  LANGUAGE6_TITLE="Western, Cyrillic code (ISO-8859-5)"
  LANGUAGE7_TITLE="Western, Greek code (ISO-8859-7)"
  LANGUAGE8_TITLE="Western, Japanese (EUC)"
  LANGUAGE9_TITLE="Western, Simplified Chinese (GB18030)"
  LANGUAGEA_TITLE="Western, UTF-8"
  LANGUAGE0_SHORT="Western"
  LANGUAGE1_SHORT="Western, Big5"
  LANGUAGE2_SHORT="Western, SJIS"
  LANGUAGE3_SHORT="Western, GB"
  LANGUAGE4_SHORT="Western, ISO-8859-1"
  LANGUAGE5_SHORT="Western, ISO-8859-2"
  LANGUAGE6_SHORT="Western, ISO-8859-5"
  LANGUAGE7_SHORT="Western, ISO-8859-7"
  LANGUAGE8_SHORT="Western, EUCJP"
  LANGUAGE9_SHORT="Western, GB18030"
  LANGUAGEA_SHORT="Western, UTF-8"

#HAVE_SAMPLE_TAR=yes
INSTALL_SAMPLE=yes
DEFAULT_PATH_SAMPLE=${PATH_APP}/samples

HAVE_TUTOR_TAR=yes
INSTALL_TUTOR=yes

HAVE_MANUAL_TAR=yes
INSTALL_MANUAL=yes
DEFAULT_PATH_MANUAL=${PATH_APP}/doc

 MANUAL0_TITLE="Quick Start Guide"
 MANUAL1_TITLE="Tutorial"
 MANUAL2_TITLE="Database Administrator's Guide"
 MANUAL3_TITLE="SQL Command and Function Reference"
 MANUAL4_TITLE="JDBATool User's Guide"
 MANUAL5_TITLE="JServer Manager User's Guide"
 MANUAL6_TITLE="JConfiguration Tool Reference"
 MANUAL7_TITLE="dmSQL User's Guide"
 MANUAL8_TITLE="ESQL/C Programmer's Guide"
 MANUAL9_TITLE="ODBC Programmer's Guide"
 MANUAL10_TITLE="Error and Message Reference"
 MANUAL11_TITLE="DCI User's Guide"
 MANUAL12_TITLE="XTT/XTM Tool User's Guide"
 MANUAL13_TITLE="SQL Stored Procedure User's Guide"
 MANUAL14_TITLE="JDBC Programmer's Guide"

 MANUAL0_SHORT="quick"
 MANUAL1_SHORT="tutorial"
 MANUAL2_SHORT="dba"
 MANUAL3_SHORT="sql"
 MANUAL4_SHORT="jdba"
 MANUAL5_SHORT="jsvrmgr"
 MANUAL6_SHORT="jconfig"
 MANUAL7_SHORT="dmsql"
 MANUAL8_SHORT="esql"
 MANUAL9_SHORT="odbc"
 MANUAL10_SHORT="error"
 MANUAL11_SHORT="dci"
 MANUAL12_SHORT="xmltool"
 MANUAL13_SHORT="sqlsp"
 MANUAL14_SHORT="jdbc"
 OPT_MANUAL0=yes
 OPT_MANUAL1=yes
 OPT_MANUAL2=yes
 OPT_MANUAL3=yes
 OPT_MANUAL4=yes
 OPT_MANUAL5=yes
 OPT_MANUAL6=yes
 OPT_MANUAL7=yes
 OPT_MANUAL8=yes
 OPT_MANUAL9=yes
 OPT_MANUAL10=yes
 OPT_MANUAL11=yes
 OPT_MANUAL12=yes
 OPT_MANUAL13=yes
 OPT_MANUAL14=yes

 FORMAT_HTML="HTML format"
 FORMAT_PDF="PDF format"
 FORMAT_HTML_SHORT="HTML"
 FORMAT_PDF_SHORT="PDF"
 OPT_HTML=no
 OPT_PDF=yes

HAVE_DRIVER_TAR=no
INSTALL_DRIVER=no
 DRIVER_JDBC_TITLE="JDBC Driver"
 DRIVER_PHP_TITLE="PHP Driver"
 DRIVER_PERL_TITLE="Perl Driver"
 DRIVER_PYTHON_TITLE="Python Driver"
 OPT_DRIVER_JDBC=yes
 OPT_DRIVER_PHP=yes
 OPT_DRIVER_PERL=yes
 OPT_DRIVER_PYTHON=yes

HAVE_JRE_TAR=yes
INSTALL_JRE=yes

PDFManualOpts () {
  manual_opts=
   if [ "$OPT_MANUAL0" = 'yes' ]; then manual_opts="$manual_opts $MANUAL0_SHORT"; fi
   if [ "$OPT_MANUAL1" = 'yes' ]; then manual_opts="$manual_opts $MANUAL1_SHORT"; fi
   if [ "$OPT_MANUAL2" = 'yes' ]; then manual_opts="$manual_opts $MANUAL2_SHORT"; fi
   if [ "$OPT_MANUAL3" = 'yes' ]; then manual_opts="$manual_opts $MANUAL3_SHORT"; fi
   if [ "$OPT_MANUAL4" = 'yes' ]; then manual_opts="$manual_opts $MANUAL4_SHORT"; fi
   if [ "$OPT_MANUAL5" = 'yes' ]; then manual_opts="$manual_opts $MANUAL5_SHORT"; fi
   if [ "$OPT_MANUAL6" = 'yes' ]; then manual_opts="$manual_opts $MANUAL6_SHORT"; fi
   if [ "$OPT_MANUAL7" = 'yes' ]; then manual_opts="$manual_opts $MANUAL7_SHORT"; fi
   if [ "$OPT_MANUAL8" = 'yes' ]; then manual_opts="$manual_opts $MANUAL8_SHORT"; fi
   if [ "$OPT_MANUAL9" = 'yes' ]; then manual_opts="$manual_opts $MANUAL9_SHORT"; fi
   if [ "$OPT_MANUAL10" = 'yes' ]; then manual_opts="$manual_opts $MANUAL10_SHORT"; fi
   if [ "$OPT_MANUAL11" = 'yes' ]; then manual_opts="$manual_opts $MANUAL11_SHORT"; fi
   if [ "$OPT_MANUAL12" = 'yes' ]; then manual_opts="$manual_opts $MANUAL12_SHORT"; fi
   if [ "$OPT_MANUAL13" = 'yes' ]; then manual_opts="$manual_opts $MANUAL13_SHORT"; fi
   if [ "$OPT_MANUAL14" = 'yes' ]; then manual_opts="$manual_opts $MANUAL14_SHORT"; fi
  if [ "X$manual_opts" = "X" ];
  then OPT_PDF='no';
  else OPT_PDF='yes';
  fi
}

FormatOpts () {
  format_opts=
   if [ "$OPT_HTML" = 'yes' ]; then format_opts="$format_opts $FORMAT_HTML_SHORT"; fi
   if [ "$OPT_PDF" = 'yes' ]; then format_opts="$format_opts $FORMAT_PDF_SHORT"; fi
  if [ "X$format_opts" = "X" ];
  then INSTALL_MANUAL='no';
  else INSTALL_MANUAL='yes';
  fi
}

DriverOpts () {
  driver_opts=
   if [ "$OPT_DRIVER_JDBC" = 'yes' ]; then driver_opts="$driver_opts $OPT_DRIVER_JDBC"; fi
   if [ "$OPT_DRIVER_PERL" = 'yes' ]; then driver_opts="$driver_opts $OPT_DRIVER_PERL"; fi
   if [ "$OPT_DRIVER_PHP" = 'yes' ]; then driver_opts="$driver_opts $OPT_DRIVER_PHP"; fi
   if [ "$OPT_DRIVER_PYTHON" = 'yes' ]; then driver_opts="$driver_opts $OPT_DRIVER_PYTHON"; fi
  if [ "X$driver_opts" = "X" ];
  then INSTALL_DRIVER='no';
  else INSTALL_DRIVER='yes';
  fi
}

GetHelp () {
  grep $1 $HELP| sed "s/$1://" >&2
}

DownloadMsg () {
  echo "Please check the file $1"
  echo "   in the {mount_cd}/$COMMONDIR_TITLE directory on DBMaker ${VERSION_FULL} CD or"
  echo "   visit DBMaker home page ($URL)"
  read ans
}

CheckFile () {
  HAVE_CDROM=no
  if [ -f ${WORKDIR}/../../AUTORUN.ICO -a -d ${WORKDIR}/../../UNIX ]; then
    HAVE_CDROM=yes
    CDROMDIR=${WORKDIR}/../..
  fi
  if [ -f ${WORKDIR}/${DMTAR} ]; then			# dm5.4.7.tar
    FILE_DMTAR=${WORKDIR}/${DMTAR}
  else
    HAVE_APP_TAR=no
    INSTALL_APP=no
    INSTALL_CLIENT=no
    INSTALL_SAMPLE=no
  fi

  if [ -f ${WORKDIR}/${DMJRE} ]; then			# jre-Linux2.ppc64le.tar
    FILE_DMJRE=${WORKDIR}/${DMJRE}
  else
    HAVE_JRE_TAR=no
    INSTALL_JRE=no
  fi

  if [ -f ${WORKDIR}/${DMTUTOR} ]; then			# dmtutor.tar
    FILE_DMTUTOR=${WORKDIR}/${DMTUTOR}
  elif [ -f ${WORKDIR}/${COMMONDIR}/${DMTUTOR} ]; then
    FILE_DMTUTOR=${WORKDIR}/${COMMONDIR}/${DMTUTOR}
  else
    HAVE_TUTOR_TAR=no
    INSTALL_TUTOR=no
  fi

  if [ "$HAVE_CDROM" = 'yes' ]; then
    FILE_DMDOC=CDROM
  elif [ -f ${WORKDIR}/${DMDOC} ]; then			# dmdoc.tar
    FILE_DMDOC=${WORKDIR}/${DMDOC}
  elif [ -f ${WORKDIR}/${COMMONDIR}/${DMDOC} ]; then
    FILE_DMDOC=${WORKDIR}/${COMMONDIR}/${DMDOC}
  else
    HAVE_MANUAL_TAR=no
    INSTALL_MANUAL=no
  fi

  if [ -f ${WORKDIR}/${DMDRIVER} ]; then		#dmdriver.tar
    FILE_DMDRIVER=${WORKDIR}/${DMDRIVER}
  elif [ -f ${WORKDIR}/${COMMONDIR}/${DMDRIVER} ]; then
    FILE_DMDRIVER=${WORKDIR}/${COMMONDIR}/${DMDRIVER}
  else
    HAVE_DRIVER_TAR=no
    INSTALL_DRIVER=no
  fi

  if [ "$HAVE_APP_TAR" = 'no' -a "$HAVE_TUTOR_TAR" = 'no' -a \
       "$HAVE_MANUAL_TAR" = 'no' ]; then
    Logo
    echo
    echo "Please visit DBMaker home page ($URL) to receive"
    echo "follow files:"
    echo
    echo "  $DMTAR        $APP_TITLE"
    echo "  $DMTUTOR     $TUTOR_TITLE"
    echo "  $DMDOC       $MANUAL_TITLE"
    echo
    echo
    exit 1
  fi
#    echo "  $DMDRIVER    $DRIVER_TITLE"
}

GetHome () {
  USER=`$WHOAMI`
  PATH_APP=`grep "^dbmaker:" /etc/passwd | awk -F: '{print $6}'`
  if [ "X$PATH_APP" = "X" -o ! -d "$PATH_APP" ]; then
    Logo
    echo
    echo "  Please create an account named 'dbmaker' and HOME directory first."
    echo
    echo
    exit 1
  elif [ "X$USER" != "Xdbmaker" ]; then
    Logo
    echo
    echo "  Please login 'dbmaker' account to install DBMaker DBMS."
    echo
    echo
    exit 1
  fi
}

Logo () {
  clear
  s1=`Center "DBMaker Database Management System Installation" 79`
  s2=`Center "For DBMaker Release ${VERSION_FULL}" 79`
  s3=`Center "Copyright(C) 1995-2025 CASEMaker Inc. All rights reserved." 79`
  cat << EOF
===============================================================================

$s1
$s2
$s3

===============================================================================
EOF
}

_Logo () {
  cat << EOF



Please read README.TXT to learn how to use DBMaker and information
specific to DBMaker ${VERSION_FULL}.


EOF
}

Center () {
  len=`echo "$1" | wc -c | sed -e 's/ //g'`
  left=`expr $2 - \( $2 - $len \) / 2`
  printf "%${left}s" "$1"
}

ShowOpt () {
  len=`echo "$1" | wc -c | sed -e 's/ //g'`
  count=`expr $2 - $len`
  $echonl $1
  echo $count "$3" | awk '{ for (i=0; i<= $1; i++) printf $2 }'
}

PreInstall () {
  RC=0
  if [ "$INSTALL_APP" = 'yes' ]; then
    if [ "${OPT_LANGUAGE}" = "-1" ]; then
      YesNo "You must choose a default language. continue" "YES"
      if [ $ans = no ]; then
        echo "Your installation is canceled."
        exit
      fi
      return 1
    fi
  fi
  return $RC
}

ShowMainMenu () {
  ExtraOpts
  Logo
  cat << EOF

Install Components:
    [A] `ShowOpt "$APP_TITLE" 60 "."` (${INSTALL_APP})
         Language: [$language_opts]
    [B] `ShowOpt "$CLIENT_TITLE" 60 "."` (${INSTALL_CLIENT})
    [C] `ShowOpt "$SAMPLE_TITLE" 60 "."` (${INSTALL_SAMPLE})
    [D] `ShowOpt "$TUTOR_TITLE" 60 "."` (${INSTALL_TUTOR})
    [E] `ShowOpt "$MANUAL_TITLE" 60 "."` (${INSTALL_MANUAL})

Install Path:
    $PATH_APP_TITLE: $PATH_APP

[Y] Start Install        [N] Quit

EOF
#    [F] $DRIVER_TITLE ..................................................... (${INSTALL_DRIVER})
}

ExtraOpts () {
   language_opts=""
   case $OPT_LANGUAGE in
     0) language_opts="$LANGUAGE0_SHORT" ;;
     1) language_opts="$LANGUAGE1_SHORT" ;;
     2) language_opts="$LANGUAGE2_SHORT" ;;
     3) language_opts="$LANGUAGE3_SHORT" ;;
     4) language_opts="$LANGUAGE4_SHORT" ;;
     5) language_opts="$LANGUAGE5_SHORT" ;;
     6) language_opts="$LANGUAGE6_SHORT" ;;
     7) language_opts="$LANGUAGE7_SHORT" ;;
     8) language_opts="$LANGUAGE8_SHORT" ;;
     9) language_opts="$LANGUAGE9_SHORT" ;;
     A) language_opts="$LANGUAGEA_SHORT" ;;
     *) language_opts="" ;;
   esac
}

ShowAppMenu () {
  echo
  if [ "$HAVE_APP_TAR" = 'yes' ]; then
    InsYesNo "$APP_TITLE" "$INSTALL_APP"
    INSTALL_APP=$ans

    if [ "$INSTALL_APP" = 'yes' ]; then
      # Language setting
      cat << EOF

 Select the language you would like to use as the default language for your
 database. This setting affects how DBMaker matches text strings in queries.
 Language: [0] ${LANGUAGE0_TITLE}
           [1] ${LANGUAGE1_TITLE}
           [2] ${LANGUAGE2_TITLE}
           [3] ${LANGUAGE8_TITLE}
           [4] ${LANGUAGE3_TITLE}
           [5] ${LANGUAGE9_TITLE}
           [6] ${LANGUAGE4_TITLE}
           [7] ${LANGUAGE5_TITLE}
           [8] ${LANGUAGE6_TITLE}
           [9] ${LANGUAGE7_TITLE}
           [A] ${LANGUAGEA_TITLE}
EOF
      ReadKey "Please press" "0 1 2 3 4 5 6 7 8 9 A"
      case $ans in
        0) OPT_LANGUAGE=0
           MESSAGE_OPT='en_US'
           ;;
        1) OPT_LANGUAGE=1
           MESSAGE_OPT='zh_TW'
           ;;
        2) OPT_LANGUAGE=2
           MESSAGE_OPT='ja_JP'
           ;;
        3) OPT_LANGUAGE=8
           MESSAGE_OPT='ja_JP'
           ;;
        4) OPT_LANGUAGE=3
           MESSAGE_OPT='zh_CN'
           ;;
        5) OPT_LANGUAGE=9
           MESSAGE_OPT='zh_CN'
           ;;
        6) OPT_LANGUAGE=4
           MESSAGE_OPT='en_US'
           ;;
        7) OPT_LANGUAGE=5
           MESSAGE_OPT='en_US'
           ;;
        8) OPT_LANGUAGE=6
           MESSAGE_OPT='en_US'
           ;;
        9) OPT_LANGUAGE=7
           MESSAGE_OPT='en_US'
           ;;
        A) OPT_LANGUAGE=A
           MESSAGE_OPT='en_US'
           ;;
        *) OPT_LANGUAGE=$DEFAULT_LANGUAGE
           MESSAGE_OPT='en_US'
           ;;
      esac
    fi
  else
    DownloadMsg $DMTAR
  fi
}

ShowClientMenu () {
  echo
  if [ "$HAVE_APP_TAR" = 'yes' ]; then
    InsYesNo "$CLIENT_TITLE" "$INSTALL_CLIENT"
    INSTALL_CLIENT=$ans
  else
    DownloadMsg $DMTAR
  fi
}

ShowSampleMenu () {
  echo
  if [ "$HAVE_APP_TAR" = 'yes' ]; then
    InsYesNo "$SAMPLE_TITLE" "$INSTALL_SAMPLE"
    INSTALL_SAMPLE=$ans
  else
    DownloadMsg $DMTAR
  fi
}

ShowTutorMenu () {
  echo
  if [ "$HAVE_TUTOR_TAR" = 'yes' ]; then
    InsYesNo "$TUTOR_TITLE" "$INSTALL_TUTOR"
    INSTALL_TUTOR=$ans
  else
    DownloadMsg $DMTUTOR
  fi
}

ShowManualMenu () {
  echo
  if [ "$HAVE_MANUAL_TAR" = 'yes' ]; then
    InsYesNo "$MANUAL_TITLE" "$INSTALL_MANUAL"
    INSTALL_MANUAL=$ans
    if [ $ans = yes ]; then
      while [ 1 ]; do
        cat << EOF
 Option: [1] `ShowOpt "${FORMAT_PDF}" 50 "."` (${OPT_PDF})
         [M] Back to main menu.
EOF
        ReadKey "Please press" "1 M"
        case $ans in
           0) YesNoChange ${OPT_HTML}
              OPT_HTML=$ans;;
           1) ShowPDFManualMenu
              ;;
           M) break;;
        esac
      done
      FormatOpts
    fi
  else
    DownloadMsg $DMDOC
  fi

}

ShowPDFManualMenu () {
  echo
  if [ "$HAVE_MANUAL_TAR" = 'yes' ]; then
    InsYesNo "$MANUAL_PDF_TITLE" "$OPT_PDF"
    OPT_PDF=$ans
    if [ $ans = yes ]; then
      while [ 1 ]; do
        cat << EOF
 Option: [0] `ShowOpt "${MANUAL0_TITLE}" 50 "."` (${OPT_MANUAL0})
         [1] `ShowOpt "${MANUAL1_TITLE}" 50 "."` (${OPT_MANUAL1})
         [2] `ShowOpt "${MANUAL2_TITLE}" 50 "."` (${OPT_MANUAL2})
         [3] `ShowOpt "${MANUAL3_TITLE}" 50 "."` (${OPT_MANUAL3})
         [4] `ShowOpt "${MANUAL4_TITLE}" 50 "."` (${OPT_MANUAL4})
         [5] `ShowOpt "${MANUAL5_TITLE}" 50 "."` (${OPT_MANUAL5})
         [6] `ShowOpt "${MANUAL6_TITLE}" 50 "."` (${OPT_MANUAL6})
         [7] `ShowOpt "${MANUAL7_TITLE}" 50 "."` (${OPT_MANUAL7})
         [8] `ShowOpt "${MANUAL8_TITLE}" 50 "."` (${OPT_MANUAL8})
         [9] `ShowOpt "${MANUAL9_TITLE}" 50 "."` (${OPT_MANUAL9})
         [A] `ShowOpt "${MANUAL10_TITLE}" 50 "."` (${OPT_MANUAL10})
         [B] `ShowOpt "${MANUAL11_TITLE}" 50 "."` (${OPT_MANUAL11})
         [C] `ShowOpt "${MANUAL12_TITLE}" 50 "."` (${OPT_MANUAL12})
         [D] `ShowOpt "${MANUAL13_TITLE}" 50 "."` (${OPT_MANUAL13})
         [E] `ShowOpt "${MANUAL14_TITLE}" 50 "."` (${OPT_MANUAL14})
         [M] Back to main menu.
EOF
        ReadKey "Please press" "0 1 2 3 4 5 6 7 8 9 A B C D E M"
        case $ans in
          M) break;;
          0) YesNoChange ${OPT_MANUAL0}
             OPT_MANUAL0=$ans;;
          1) YesNoChange ${OPT_MANUAL1}
             OPT_MANUAL1=$ans;;
          2) YesNoChange ${OPT_MANUAL2}
             OPT_MANUAL2=$ans;;
          3) YesNoChange ${OPT_MANUAL3}
             OPT_MANUAL3=$ans;;
          4) YesNoChange ${OPT_MANUAL4}
             OPT_MANUAL4=$ans;;
          5) YesNoChange ${OPT_MANUAL5}
             OPT_MANUAL5=$ans;;
          6) YesNoChange ${OPT_MANUAL6}
             OPT_MANUAL6=$ans;;
          7) YesNoChange ${OPT_MANUAL7}
             OPT_MANUAL7=$ans;;
          8) YesNoChange ${OPT_MANUAL8}
             OPT_MANUAL8=$ans;;
          9) YesNoChange ${OPT_MANUAL9}
             OPT_MANUAL9=$ans;;
          A) YesNoChange ${OPT_MANUAL10}
             OPT_MANUAL10=$ans;;
          B) YesNoChange ${OPT_MANUAL11}
             OPT_MANUAL11=$ans;;
          C) YesNoChange ${OPT_MANUAL12}
             OPT_MANUAL12=$ans;;
          D) YesNoChange ${OPT_MANUAL13}
             OPT_MANUAL13=$ans;;
          E) YesNoChange ${OPT_MANUAL14}
             OPT_MANUAL14=$ans;;
        esac
      done
      PDFManualOpts
    fi
  else
    DownloadMsg $DMDOC
  fi
}

ShowDriverMenu()
{
  echo
  if [ "$HAVE_DRIVER_TAR" = 'yes' ]; then
    InsYesNo "$DRIVER_TITLE" "$INSTALL_DRIVER"
    INSTALL_DRIVER=$ans

    if [ $ans = yes ]; then
      while [ 1 ]; do
        cat << EOF
 Option: [0] `ShowOpt "${DRIVER_JDBC_TITLE}" 50 "."` (${OPT_DRIVER_JDBC})
         [1] `ShowOpt "${DRIVER_PHP_TITLE}" 50 "."` (${OPT_DRIVER_PHP})
         [2] `ShowOpt "${DRIVER_PERL_TITLE}" 50 "."` (${OPT_DRIVER_PERL})
         [3] `ShowOpt "${DRIVER_PYTHON_TITLE}" 50 "."` (${OPT_DRIVER_PYTHON})
         [M] Back to main menu.
EOF
        ReadKey "Please press" "0 1 2 3 M"
        case $ans in
          M) break;;
          0) YesNoChange ${OPT_DRIVER_JDBC}
             OPT_DRIVER_JDBC=$ans;;
          1) YesNoChange ${OPT_DRIVER_PHP}
             OPT_DRIVER_PHP=$ans;;
          2) YesNoChange ${OPT_DRIVER_PERL}
             OPT_DRIVER_PERL=$ans;;
          3) YesNoChange ${OPT_DRIVER_PYTHON}
	     OPT_DRIVER_PYTHON=$ans;;
        esac
      done
      DriverOpts
    fi
  else
    DownloadMsg $DMDRIVER
  fi
}

ShowApplicationMenu()
{
  echo
  if [ "$HAVE_AP_TAR" = 'yes' ]; then
    InsYesNo "$AP_TITLE" "$INSTALL_AP"
    INSTALL_AP=$ans

    if [ $ans = yes ]; then
      while [ 1 ]; do
        cat << EOF
 Option: [0] `ShowOpt "${AP_ECOMMERCE_TITLE}" 50 "."` (${OPT_AP_ECOMMERCE})
         [1] `ShowOpt "${AP_ECMS_TITLE}" 50 "."` (${OPT_AP_ECMS})
         [2] `ShowOpt "${AP_WEBSEARCH_TITLE}" 50 "."` (${OPT_AP_WEBSEARCH})
         [M] Back to main menu.
EOF
        ReadKey "Please press" "0 1 2 3 M"
        case $ans in
          M) break;;
          0) YesNoChange ${OPT_AP_ECOMMERCE}
	     OPT_AP_ECOMMERCE=$ans;;
          1) YesNoChange ${OPT_AP_ECMS}
             OPT_AP_ECMS=$ans;;
          2) YesNoChange ${OPT_AP_WEBSEARCH}
             OPT_AP_WEBSEARCH=$ans;;
        esac
      done
    fi
  else
    DownloadMsg $DMAP
  fi
}

CreateDMConfig () {
  CONFDIR=${PATH_APP}/${VERSION_NUM}
  if [ ! -f $CONFDIR/dmconfig.ini ]; then $echonl >> $CONFDIR/dmconfig.ini; fi
  #
  # DBSAMPLE5
  #
  SEC_NAME=`grep -i "\[DBSAMPLE5\]" $CONFDIR/dmconfig.ini`
  if [ -z "$SEC_NAME" ]; then
      cat << EOF >> $CONFDIR/dmconfig.ini

[DBSAMPLE5]
DB_DBDIR = ${PATH_APP}/${VERSION_NUM}/samples/DATABASE
DB_PtNum = 2453
DB_SvAdr = 127.0.0.1
DB_SPDIR = ${PATH_APP}/${VERSION_NUM}/samples/DATABASE
DB_LBDIR = ${PATH_APP}/${VERSION_NUM}/samples/DATABASE
EOF
  fi
  #
  # Tutorial
  #
  if [ "$HAVE_TUTOR_TAR" = 'yes' -a  "$INSTALL_TUTOR" = 'yes' ]; then
    SEC_NAME=`grep -i "\[tutorial\]" $CONFDIR/dmconfig.ini`
    if [ -z "$SEC_NAME" ]; then
      cat << EOF >> $CONFDIR/dmconfig.ini

[TUTORIAL]
DB_DBDIR  = ${PATH_APP}/${VERSION_NUM}/tutorial
DB_PtNum  = 9901
DB_SvAdr  = 127.0.0.1
DB_UsrId  = SYSADM
DB_PasWd  =
CustFile  = ${PATH_APP}/${VERSION_NUM}/tutorial/custfile.db 50
CustBlob  = ${PATH_APP}/${VERSION_NUM}/tutorial/custblob.bb 5
MovieFile = ${PATH_APP}/${VERSION_NUM}/tutorial/movifile.db 50
MovieBlob = ${PATH_APP}/${VERSION_NUM}/tutorial/moviblob.bb 5
SalesFile = ${PATH_APP}/${VERSION_NUM}/tutorial/salefile.db 50
SalesBlob = ${PATH_APP}/${VERSION_NUM}/tutorial/saleblob.bb 5
EmployeeFile = ${PATH_APP}/${VERSION_NUM}/tutorial/emplfile.db 50
EmployeeBlob = ${PATH_APP}/${VERSION_NUM}/tutorial/emplblob.bb 5
EOF
    fi
  fi
  chmod 755 ${PATH_APP}
  chmod 755 ${CONFDIR}
  test -f ${CONFDIR}/dmconfig.ini && chmod 644 ${CONFDIR}/dmconfig.ini
}

SedPath () {
  DBDIR="${PATH_APP}/${VERSION_NUM}"
  CRLF=`echo "" | awk '{printf "\r"}'`
  LST='Makefile *.asp *.aspx *.bas *.c *.config *.cs *.css *.dpr *.DSP *.dsp *.dsw *.ec *.h *.html *.inc *.ini *.java *.jsp *.mak *.pas *.path *.php* *.pl *.py *.s0 *.sql *.txt *.TXT *.vb .t3svr_wrapper'
  unset LANG LC_CTYPE
  for i in $LST; do
    find "$DBDIR" -name $i | \
    while read j; do
      pid=$$
      sed -e "s|/APP_HOME|$DBDIR|g" -e "s|$CRLF$||g" $j > $j.$pid && mv -f $j.$pid $j
    done
    $echonl .
  done

  # Fix perm
  test -d $DBDIR/bin && chmod -R 755 $DBDIR/bin
}

UNTAR () {
  EXT=`echo $1 | sed -e 's|.*\(\.gz\)|\1|g'`
  if [ "$EXT" = ".gz" ]; then
    TAROPT="-zxvf"
  else
    TAROPT="-xvf"
  fi
  tar $TAROPT "$@"
}

DefaultLicense () {
  LICFILE=${PATH_APP}/${VERSION_NUM}/${LICENCE_FILE}
  ORGSERIAL=`test -f ${LICFILE} && sed -n '2p' ${LICFILE}`
  if [ -z "$ORGSERIAL" ]; then
    ORGSERIAL="Serial Number"
  fi
  LCODE=$1
  if [ "$LCODE" = "A" ]; then
    LCODE=10
  fi
  cat << EOF 2>/dev/null > ${LICFILE}
[DBMaker ${VERSION_NUM}]
${ORGSERIAL}
Language=${LCODE}
EOF
}

#
# Main loop
#
CheckFile
GetHome

while [ 1 ]; do
  ShowMainMenu
  ReadKey "Please press" "A B C D E Y N"
  case $ans in
  A) ShowAppMenu
     ;;
  B) ShowClientMenu
     ;;
  C) ShowSampleMenu
     ;;
  D) ShowTutorMenu
     ;;
  E) ShowManualMenu
     ;;
#  F) ShowDriverMenu
#     ;;
  Y) PreInstall
     test $? -eq 0 && break
     ;;
  N) exit 1
     ;;
  H) ShowHelp
     ;;
  esac
done

echo "Start install ......"

if [ ! -d ${PATH_APP}/${VERSION_NUM} ]; then
  mkdir ${PATH_APP}/${VERSION_NUM}
else
  YesNo "Do you want to overwrite the old version." "YES"
  if [ $ans = no ]; then
    echo "Your installation is canceled."
    exit
  fi
fi

#
# untar main component files
#
if [ "$HAVE_APP_TAR" = 'yes' ]; then
  FLIST=
  if [ "$INSTALL_APP" = 'yes' ]; then	# Server
    FLIST="$FLIST $APP_FILE"
  elif [ "$INSTALL_CLIENT" = 'yes' ]; then	# Client
    FLIST="$FLIST $CLIENT_FILE"
  fi
  if [ "$INSTALL_SAMPLE" = 'yes' ]; then	# Sample file
    FLIST="$FLIST $SAMPLE_FILE"
  fi

  if [ "X$FLIST" != "X" ]; then			# Information file
    FLIST="$FLIST $OTHER_FILE"

    EXFILE=
    for dmfile in $FLIST; do
      EXFILE="$EXFILE ${VERSION_NUM}/$dmfile"
    done
    cd ${PATH_APP}
    UNTAR $FILE_DMTAR ${EXFILE}

    # Copy l10n file
    if [ "$HAVE_CDROM" = 'yes' ]; then
      cd ${PATH_APP}/${VERSION_NUM}/lib/java
      cp -f ${CDROMDIR}/HELP/jhelp.jar .
    fi

    # Copy l10n file
    l10ndir="${PATH_APP}/${VERSION_NUM}/locale"
    if [ -d "$l10ndir" ]; then
      cp -frp $l10ndir/$MESSAGE_OPT/* ${PATH_APP}/${VERSION_NUM}
      rm -fr $l10ndir
    fi

    # Create symbolic link on Java program
    if [ "$INSTALL_CLIENT" = 'yes' -o "$INSTALL_APP" = 'yes' ]; then	# Client
      cd ${PATH_APP}/${VERSION_NUM}/bin
      ln -sf .dmjava_wrapper dmeditor
      ln -sf .dmjava_wrapper jdba
      ln -sf .dmjava_wrapper jdatatransfer
      ln -sf .dmjava_wrapper jmonitor
      ln -sf .dmjava_wrapper jsvrmgr
      ln -sf .dmjava_wrapper xtm
      ln -sf .dmjava_wrapper xtt
      if [ "$INSTALL_APP" = 'yes' ]; then
        ln -sf .t3svr_wrapper  t3svr
        ln -sf .t3svr_wrapper  t3svr_stop
      fi
    fi

    # Install default license
    if [ "$INSTALL_APP" = 'yes' ]; then
      DefaultLicense $OPT_LANGUAGE
    fi

    # Configuration
    if [ "$INSTALL_SAMPLE" = 'yes' ]; then        # Sample file
      CreateDMConfig
    fi
  fi
fi

#
# untar java runtime environment
#
if [ "$HAVE_JRE_TAR" = 'yes' ]; then
  FLIST=
  if [ "$INSTALL_JRE" = 'yes' -a "$INSTALL_APP" = 'yes' -o "$INSTALL_CLIENT" = 'yes' ]; then	# Driver file
    FLIST="$FLIST $JRE_FILE"
  fi
  if [ "X$FLIST" != "X" ]; then
    EXFILE=
    for dmfile in $FLIST; do
      EXFILE="$EXFILE $dmfile"
    done
    cd ${PATH_APP}/${VERSION_NUM}
    UNTAR $FILE_DMJRE ${EXFILE}
  fi
fi

#
# untar App enabled driver, JDBC/Perl/Python/PHP
#
if [ "$HAVE_DRIVER_TAR" = 'yes' ]; then
  FLIST=
  if [ "$INSTALL_DRIVER" = 'yes' ]; then	# Driver file
    if [ "$OPT_DRIVER_JDBC" = 'yes' ]; then
      FLIST="$FLIST $DRIVER_JDBC_FILE"
    fi
    if [ "$OPT_DRIVER_PHP" = 'yes' ]; then
      FLIST="$FLIST $DRIVER_PHP_FILE"
    fi
    if [ "$OPT_DRIVER_PERL" = 'yes' ]; then
      FLIST="$FLIST $DRIVER_PERL_FILE"
    fi
    if [ "$OPT_DRIVER_PYTHON" = 'yes' ]; then
      FLIST="$FLIST $DRIVER_PYTHON_FILE"
    fi
  fi
  if [ "X$FLIST" != "X" ]; then
    EXFILE=
    for dmfile in $FLIST; do
      EXFILE="$EXFILE ${VERSION_NUM}/$dmfile"
    done
    cd ${PATH_APP}
    UNTAR $FILE_DMDRIVER ${EXFILE}
  fi
fi

#
# Install HTML file
#
if [ "$HAVE_MANUAL_TAR" = 'yes' -o "$HAVE_CDROM" = 'yes' ]; then
  if [ "$INSTALL_MANUAL" = 'yes' ]; then
    if [ "$OPT_HTML" = 'yes' ]; then
      FLIST=
      FLIST="$FLIST $HTML_MANUAL_FILE"
      cd ${PATH_APP}/${VERSION_NUM}
      EXFILE=
      for dmfile in $FLIST; do
        EXFILE="$EXFILE $dmfile"
      done
      UNTAR $FILE_DMDOC $EXFILE
    fi

    #
    # Install manual file
    #
    if [ "$OPT_PDF" = 'yes' ]; then
      FLIST=
      if [ "$OPT_MANUAL0" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE0"
      fi
      if [ "$OPT_MANUAL1" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE1"
      fi
      if [ "$OPT_MANUAL2" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE2"
      fi
      if [ "$OPT_MANUAL3" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE3"
      fi
      if [ "$OPT_MANUAL4" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE4"
      fi
      if [ "$OPT_MANUAL5" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE5"
      fi
      if [ "$OPT_MANUAL6" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE6"
      fi
      if [ "$OPT_MANUAL7" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE7"
      fi
      if [ "$OPT_MANUAL8" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE8"
      fi
      if [ "$OPT_MANUAL9" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE9"
      fi
      if [ "$OPT_MANUAL10" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE10"
      fi
      if [ "$OPT_MANUAL11" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE11"
      fi
      if [ "$OPT_MANUAL12" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE12"
      fi
      if [ "$OPT_MANUAL13" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE13"
      fi
      if [ "$OPT_MANUAL14" = 'yes' ]; then
        FLIST="$FLIST $MANUAL_FILE14"
      fi

      cd ${PATH_APP}/${VERSION_NUM}
      if [ ! -d "$DOC_DIR" ]; then
        mkdir -p $DOC_DIR
      fi
      EXFILE=
      if [ "$HAVE_CDROM" = 'yes' ]; then
        for dmfile in $FLIST; do
          cp -f ${CDROMDIR}/$dmfile $DOC_DIR
        done
      else
        for dmfile in $FLIST; do
          EXFILE="$EXFILE $dmfile"
        done
        UNTAR $FILE_DMDOC $EXFILE
      fi
    fi
  fi
fi

#
# Fix path
#
SedPath

#
# Install DBSAMPLE database
#
if [ "$HAVE_APP_TAR" = 'yes' ]; then
  if [ "$INSTALL_SAMPLE" = 'yes' ]; then        # Sample file
    cd ${PATH_APP}/${VERSION_NUM}/samples/DATABASE
    if [ ! -d fo ]; then
      mkdir fo
    fi
    if [ -f ${PATH_APP}/${VERSION_NUM}/bin/dmsqls ]; then
     if [ ! -f ${PATH_APP}/${VERSION_NUM}/samples/DATABASE/DBSAMPLE5.SDB ]; then
       LD_LIBRARY_PATH=${PATH_APP}/${VERSION_NUM}/lib/so \
       ${PATH_APP}/${VERSION_NUM}/bin/dmsqls init.sql
     fi
     cd ${PATH_APP}/${VERSION_NUM}/bin
    fi
  fi
fi

#
# Install tutorial file
#
if [ "$HAVE_TUTOR_TAR" = 'yes' ]; then
  if [ "$INSTALL_TUTOR" = 'yes' ]; then
    cd ${PATH_APP}/${VERSION_NUM}
    UNTAR $FILE_DMTUTOR
    echo
    echo "Do you want to create the $TUTOR_TITLE?"
    echo "You must have installed the 'dmsqls' program to proceed with the"
    echo "$TUTOR_TITLE setup."
    YesNo "This step requires about 1~2 minutes" "YES"
    if [ $ans = yes ]; then
      cd ${PATH_APP}/${VERSION_NUM}/tutorial
      if [ -f ${PATH_APP}/${VERSION_NUM}/bin/dmsqls ]; then
        ${PATH_APP}/${VERSION_NUM}/bin/dmsqls ${PATH_APP}/${VERSION_NUM}/tutorial/tutorial.sql
      fi
    fi
  fi
fi

_Logo

