#/bin/ksh
#---------------------------------------------------
#   client file
#      bin/db2ext
#      bin/db2extb
#      lib/libdmbsci.so
#      image/lib/libdmbqbapi.so      
#      image/lib/libdmbqqry.so 
#      image/lib/dmbqimg8.bnd
#   server file
#      bin/dmbsrv
#      lib/libdmbdb2.so
#      lib/libdmbscis.so
#      image/lib/libdmbqbic.so
#      image/lib/libdmbqbase.so
#      image/lib/libdmbqapi.so
#   doc files
#      doc/$LANG/html/dmba5/bannerx.gif
#      doc/$LANG/html/dmba5/dmba5001.gif
#      doc/$LANG/html/dmba5/dmba5002.gif
#      doc/$LANG/html/dmba5/dmba5003.gif
#      doc/$LANG/html/desu9/bannerx.gif
#---------------------------------------------------
aivlevel=u452692
curdir=$PWD
dmbtop=/opt/IBMdb2ex/V5.0
dmbtemp=$dmbtop/temp
dmbbin=$dmbtop/bin
dmblib=$dmbtop/lib
dmbdoc=$dmbtop/doc
imagelib=$dmbtop/image/lib
server=N
bindfile=dmbqimg8.bnd
#----------------------------------------------------
#  back out if any error
#----------------------------------------------------
function backup_fail {
  for name in db2ext db2extb
  do
    if [[ -f $dmbtemp/$name ]]
    then
        mv $dmbtemp/$name $dmbbin/$name
    fi
  done

  for name in libdmbqbapi.so libdmbqqry.so $bindfile
  do
    if [[ -f $dmbtemp/$name ]]
    then
        mv $dmbtemp/$name $imagelib/$name
    fi
  done

  if [[ -f $dmbtemp/libdmbsci.so ]]
  then
      mv $dmbtemp/libdmbsci.so $dmblib/libdmbsci.so
  fi

  if [[ $server = Y ]]
  then 
      if [[ -f $dmbtemp/dmbsrv ]]
      then
          mv $dmbtemp/dmbsrv $dmbbin/dmbsrv
      fi

      for name in libdmbqapi.so libdmbqbic.so libdmbqbase.so
      do
        if [[ -f $dmbtemp/$name ]]
        then
            mv $dmbtemp/$name $imagelib/$name
        fi
      done 
      for name in libdmbdb2.so libdmbscis.so
      do
        if [[ -f $dmblib/$name ]]
        then
            mv $dmbtemp/$name $dmblib/$name
        fi
      done
  fi 
  rm -rf $dmbtemp
  print "Service Pak is not installed due to back up errors !"
  exit
}
#----------------------------------------------------
#  back out if any error
#----------------------------------------------------
function copy_fail {
  for name in db2ext db2extb
  do
    if [[ -f $dmbbin/$name ]]
    then
        rm $dmbbin/$name
    fi
    mv $dmbtemp/$name $dmbbin/$name
  done
  for name in libdmbqbapi.so libdmbqqry.so $bindfile 
  do
    if [[ -f $imagelib/$name ]]
    then
		  rm $imagelib/$name
    fi
    mv $dmbtemp/$name $imagelib/$name
  done
  if [[ -f $dmblib/libdmbsci.so ]]
  then
      rm $dmblib/libdmbsci.so
  fi
  mv $dmbtemp/libdmbsci.so $dmblib/libdmbsci.so
  if [[ $server = Y ]]
  then
      if [[ -f $dmbbin/dmbsrv ]]
      then
          rm $dmbbin/dmbsrv
      fi
      mv $dmbtemp/dmbsrv $dmbbin/dmbsrv
      for name in libdmbqapi.so libdmbqbic.so libdmbqbase.so 
      do
        if [[ -f $imagelib/$name ]]
        then
            rm $imagelib/$name
        fi
        mv $dmbtemp/$name $imagelib/$name
      done
      for name in libdmbdb2.so libdmbscis.so
      do
        if [[ -f $dmblib/$name ]]
        then
            rm $dmblib/$name
        fi
        mv $dmbtemp/$name $dmblib/$name
      done 
  fi 
  rm -rf $dmbtemp
  print "Service Pak is not installed due to copy errors !"
  exit
}

#------------------------------------------------
#  make sure that DB2 extender is installed
#------------------------------------------------
if  [[ ! -d $dmbbin ]] || [[ ! -d $dmblib ]] 
then
    print "Service pak can not be installed. DB2 extender was not installed properly."
    exit 
fi


#------------------------------------------------
#  get rid of $dmbtemp directory if exist
#------------------------------------------------
if [[ -d $dmbtemp ]]
then
    rm -rf $dmbtemp
    if [[ -d $dmbtemp ]]  
      then
          print "Service pak can not be installed. You do not have the authority."
          exit 
    fi 
fi
#------------------------------------------------
#  create $dmbtemp directory
#------------------------------------------------
mkdir $dmbtemp
if [[ ! -d $dmbtemp ]]
then
    print "Service pak can not be installed. You do not have the authority."
    exit 
fi
print "created"  $dmbtemp
#------------------------------------------------
#  server or client ?
#------------------------------------------------
if [[ -f $dmbbin/dmbsrv ]]  
then
    server=Y    
fi
#----------------------------------------------------
#  back up the original files to temp directory
#----------------------------------------------------
print Backing up client files ...
for name in db2ext db2extb
do
  mv $dmbbin/$name $dmbtemp/$name 
  if [[ ! -f $dmbtemp/$name ]]
  then
      backup_fail
  fi
done
for name in libdmbqbapi.so libdmbqqry.so $bindfile 
do
  mv $imagelib/$name $dmbtemp/$name
  if [[ ! -f $dmbtemp/$name ]]
  then
      backup_fail
  fi
done
for name in libdmbsci.so
do
  mv  $dmblib/$name $dmbtemp/$name
  if [[ ! -f $dmbtemp/$name ]]
  then
      backup_fail
  fi
done
if [[ $server = Y ]]
then
    print Backing up server files ...
    mv $dmbbin/dmbsrv $dmbtemp/dmbsrv 
    if [[ ! -f $dmbtemp/dmbsrv ]]
    then
        backup_fail
    fi
    for name in libdmbqapi.so libdmbqbic.so libdmbqbase.so 
    do
      mv $imagelib/$name $dmbtemp/$name
      if [[ ! -f $dmbtemp/$name ]]
      then
          backup_fail
      fi
    done
    for name in libdmbdb2.so libdmbscis.so 
    do
      mv  $dmblib/$name $dmbtemp/$name
      if [[ ! -f $dmbtemp/$name ]]
      then
          backup_fail
      fi
    done
fi

#----------------------------------------------------
#  copy the new files if backups done successfully 
#----------------------------------------------------
print Copying client files ...
for name in db2ext db2extb
do
  cp -p $curdir/$name $dmbbin/$name
  if [[ ! -f $dmbbin/$name ]]
  then
       copy_fail
  fi  
done
for name in libdmbqbapi.so libdmbqqry.so $bindfile 
do
  cp -p $curdir/$name $imagelib/$name
  if [[ ! -f $imagelib/$name ]]
  then
     copy_fail
  fi
done
for name in libdmbsci.so
do
  cp -p $curdir/$name $dmblib/$name
  if [[ ! -f $dmblib/$name ]]
  then
     copy_fail
  fi
done
if [[ $server = Y ]]
then
    print Copying server files ... 
    cp -p $curdir/dmbsrv $dmbbin/dmbsrv
    if [[ ! -f $dmbbin/dmbsrv ]]
    then
        copy_fail
    fi  
    for name in libdmbqapi.so libdmbqbic.so libdmbqbase.so 
    do
      cp -p $curdir/$name $imagelib/$name
      if [[ ! -f $imagelib/$name ]]
      then
          copy_fail
      fi
    done
    for name in libdmbdb2.so libdmbscis.so 
    do
      cp -p $curdir/$name $dmblib/$name
      if [[ ! -f $dmblib/$name ]]
      then
          copy_fail
      fi
    done
fi
#
#   copy the gif files for html pages
#
#for ctry in De_DE En_US Es_ES Fr_FR It_IT Ja_JP Pt_BR ko_KR zh_CN zh_TW
for ctry in En_US ko_KR
do
  if [[ -d $dmbdoc/$ctry ]]
  then
		for name in bannerx.gif dmba5001.gif dmba5002.gif dmba5003.gif
		do
		  cp -p ${ctry}_dmba5_$name $dmbdoc/$ctry/html/dmba5/$name
		  chmod 444 $dmbdoc/$ctry/html/dmba5/$name
		  chown bin:bin $dmbdoc/$ctry/html/dmba5/$name
		done
		if [[ -d $dmbdoc/$ctry/html/desu9 ]]
		then
		    cp -p ${ctry}_desu9_bannerx.gif $dmbdoc/$ctry/html/desu9/bannerx.gif
		    chmod 444 $dmbdoc/$ctry/html/desu9/bannerx.gif
		    chown bin:bin $dmbdoc/$ctry/html/desu9/bannerx.gif
	   fi
  fi
done
#
#  set file mode
#

for name in db2ext db2extb
do
  chmod 555 $dmbbin/$name
  chown bin:bin $dmbbin/$name
done
chmod 444 $dmblib/libdmbsci.so
chown bin:bin $dmblib/libdmbsci.so
for name in libdmbqbapi.so libdmbqqry.so dmbqimg8.bnd
do
  chmod 444 $imagelib/$name
  chown bin:bin $imagelib/$name
done
if [[ $server = Y ]]
then
  chmod 555 $dmbbin/dmbsrv
  chown bin:bin $dmbbin/dmbsrv
  for name in libdmbdb2.so libdmbscis.so
	 do
      chmod 444 $dmblib/$name
		chown bin:bin $dmblib/$name
	 done
  for name in libdmbqbic.so libdmbqbase.so libdmbqapi.so
    do
	   chmod 444 $imagelib/$name
      chown bin:bin $imagelib/$name
	 done
fi

cat $aivlevel.lvl >> $dmbtop/AIVLEVEL

rm -rf $dmbtemp

print "PTF Installation completed!"
exit

