#!/bin/sh
###########################################################################
# Setup SISCAD-P user  ( resp. $GLOBAL_HOME )
# Copyright (c) 1993-1995 Staedtler Mars GmbH & Co - SIS
###########################################################################
# @(#)setup_user	1.19 of 6/12/95

OS=`${cadexe}/osname`

case ${OS} in
  AIX    ) TEST_LN="-L" ;;
  IRIX   ) TEST_LN="-l" ;;
  *      ) TEST_LN="-h" ;;
esac

if [ "$1" != "-g" ]
then
  setup_global=0
else
  setup_global=1
fi

#
#  WICHTIG: diese drei Dateien werden in setup_user und start ausgewertet
#
INSTLOG=${SISCAD_HOME}/.version        # SISCAD-P version
USEGLOG=${GLOBAL_HOME}/.version        # global version
USEDLOG=${PRIVAT_HOME}/.version        # Users version 
#

####################
init_text_messages() 
####################
{
case $SISLANGUAGE in

DEUTSCH)
TXT_CONTABORT="Weiter mit RETURN, Abbruch mit Ctrl-C bzw. Entf "
TXT_DIREXIST="bereits vorhanden"
TXT_CREATE="Erzeuge"
TXT_BACKUP="Sichere"
TXT_INSTALL="Installiere"
TXT_ANSWYN="Bitte antworten Sie mit j/n : "
TXT_ROOTINFO="Sie sind als  root  eingeloggt."
TXT_ROOTSETUP="Soll der Setup wirklich als root durchgefuehrt werden ? (j/n) "
TXT_MKDIRS="SISCAD-P Verzeichnisse werden angelegt ..."
TXT_MKPROF="Aktualisieren der profiles auf ${HOME} ..."
TXT_CHKFILES="Ueberpruefen der SISCAD-P Dateien auf"
TXT_MKDEF="Aktualisieren der Datei siscadp.def auf"
TXT_ANSWERYN="Bitte antworten Sie mit j/n : "
TXTCMD_WDWMGR=TXTCMD_WDWMGR_DE
TXTCMD_USETUP=TXTCMD_USETUP_DE
TXTCMD_GSETUP=TXTCMD_GSETUP_DE
TXTCMD_ENDUSETUP=TXTCMD_ENDUSETUP_DE
TXTCMD_ENDGSETUP=TXTCMD_ENDGSETUP_DE
;;

ENGLISH)
TXT_CONTABORT="Continue with RETURN or Ctrl-C / Del to abort "
TXT_DIREXIST="already exist"
TXT_CREATE="Create"
TXT_BACKUP="Backup"
TXT_INSTALL="Install"
TXT_ANSWYN="Please answer with y/n : "
TXT_ROOTINFO="You are logged in as root."
TXT_ROOTSETUP="Are you sure to run a root setup ? (y/n) "
TXT_MKDIRS="Creating SISCAD-P directories ..."
TXT_MKPROF="Updating profiles in ${HOME} ..."
TXT_CHKFILES="Checking files in"
TXT_MKDEF="Updating file siscadp.def in"
TXT_ANSWERYN="Please answer with y/n : "
TXTCMD_WDWMGR=TXTCMD_WDWMGR_EN
TXTCMD_USETUP=TXTCMD_USETUP_EN
TXTCMD_GSETUP=TXTCMD_GSETUP_EN
TXTCMD_ENDUSETUP=TXTCMD_ENDUSETUP_EN
TXTCMD_ENDGSETUP=TXTCMD_ENDGSETUP_EN
;;
esac
}

##################
TXTCMD_USETUP_DE()
##################
{
cat <<END

SISCAD-P Benutzer Setup
-----------------------

Fuer das Arbeiten mit  SISCAD-P  sind einige Startup-Dateien
noetig, welche hiermit eingerichtet werden.

Bereits  existierende Startup-Dateien  werden vor  dem Ersetzen
umbenannt  und erhalten den Original-Dateinamen  mit der Endung
".LaufendeNummer". 

Beispiel: Die Datei .mwmrc wird umbenannt nach .mwmrc.1 . Falls
          .mwmrc.1 bereits existiert, wird .mwmrc nach .mwmrc.2
          gesichert usw.

Desweiteren wird in Ihrem Heimatverzeichnis ${HOME}
das Unterverzeichnis "siscadp" mit weiteren Unterverzeichnissen
fuer Ihre  privaten  SISCAD-P Daten angelegt, falls diese nicht 
bereits eingerichtet worden sind.

END
}

##################
TXTCMD_USETUP_EN()
##################
{
cat <<END

SISCAD-P user setup
-------------------

While working with SISCAD-P you need some startup files and your
private SISCAD-P directory named '${HOME}/siscadp'
created now.

Startup files already existing will be saved under their original
names with extension '.CurrentNumber'.

Example: File .fvwmrc will be renamed to .fvwmrc.1 . If file
         .fvwmrc.1 does already exist, .fvwmrc will be saved as
         .fvwmrc.2 .

END
}

##################
TXTCMD_GSETUP_DE()
##################
{
cat <<END

SISCAD-P Setup fuer das globale Verzeichnis
-------------------------------------------

Fuer das Arbeiten mit SISCAD-P  wird das globale Verzeichnis
${GLOBAL_HOME} mit Unterverzeichnissen eingerichtet.

END
}

##################
TXTCMD_GSETUP_EN()
##################
{
cat <<END

SISCAD-P global setup
---------------------

While working with SISCAD-P you need a global SISCAD-P directory
named ${GLOBAL_HOME}.

This directory will now be created.

END
}


##################
TXTCMD_WDWMGR_DE()
##################
{
cat <<END

Mit welchem Window-Manager wollen Sie mit SISCAD-P arbeiten

       1 .. fvwm  F(?) Virtual Window-Manager fuer X11
       2 .. mwm   OSF / Motif  Window-Manager

                                                       <?>
END
}

##################
TXTCMD_WDWMGR_EN()
##################
{
cat <<END

What is your favorite window-manager

       1 .. fvwm  F(?) Virtual Window-Manager for X11
       2 .. mwm   OSF / Motif  Window-Manager

                                                       <?>
END
}

#####################
TXTCMD_ENDUSETUP_DE()
#####################
{
  cat <<END

Das SISCAD-P Benutzer Setup ist beendet.

Bitte loggen Sie sich  nun ganz aus (login: Prompt), damit alle
Aenderungen wirksam werden.
Nach dem naechsten Einloggen koennen Sie dann SISCAD-P in einem
Fenster aus der Kommandozeile (Befehl: siscadp)  oder ueber das
Menue des Window-Managers starten.
                                                       <Return>

END
}

#####################
TXTCMD_ENDUSETUP_EN()
#####################
{
  cat <<END

SISCAD-P user setup has passed successfully.

Now please logout to take all modifications effective.
After next login you can start SISCAD-P from command line

   command:  siscadp

or by pressing [ SISCAD-P ] in the menue of your window manager.
To do so you have to restart your window manager.

                                                       <Return>

END
}

#####################
TXTCMD_ENDGSETUP_DE()
#####################
{
cat <<END

Das SISCAD-P Setup fuer das globale Verzeichnis ist beendet.

END
}

#####################
TXTCMD_ENDGSETUP_EN()
#####################
{
cat <<END

SISCAD-P global setup has passed successfully.

END
}

#########
echo_nl()
#########
{
  case ${OS} in
    IRIX   ) echo "$1 \c" ;;
    *      ) echo -n "$1" ;;
  esac
}


############
create_dir()
############
{
 d=$1
 m=$2
 if [ -d ${d} ]
 then
   echo "${d} ${TXT_DIREXIST}"
 else
   echo "${TXT_CREATE} ${d}"
   if mkdir ${d} 
   then
     chmod ${m} ${d}
   else
     exit 2
   fi
 fi
}

########
ln_dir()
########
{
 olddir=$1
 d=$2
 if [ ${TEST_LN} ${d} ]
 then
   echo Link ${d} -\> ${olddir} already exist
 else
   echo Linking ${d} -\> ${olddir}
   if ln -s ${olddir} ${d}
   then
     :
   else
     exit 2
   fi
 fi
}

############
check_file()  # $1 sourcefile(full path)   $2 destinationdirectory
############
{
 i=1    # Fileversion to save

 CWD=`pwd`
 cd $2  # change to the destination
 FN=`basename $1`

 if [ -f "${FN}" ]  # file does already exist
 then
   if diff $1 $2/${FN} > /dev/null 2>&1 # testing, if files are different
   then
     :
   else
     while true
     do
       if [ -f "${FN}.${i}" ]
       then
         i=`expr ${i} + 1`
       else
         break
       fi
     done
  
     echo  "${TXT_BACKUP} ${FN} --> ${FN}.${i}"
     if mv ${FN} ${FN}.${i}
     then
       :
     else
       exit 2
     fi
   fi
 fi
}

#############
update_file()  # $1 sourcefile(full path)   $2 destinationdirectory
#############
{
 FN=`basename $1`

 check_file $1 $2
 echo "${TXT_INSTALL} ${FN}"
 if cp $1 $2/${FN}
 then
   :
 else
   exit 2
 fi
}

#######
askyn()
#######
{
 while true
 do
   read x
   case ${x} in
       [jJyY]) return 0 ;;
       "")     return 0 ;;
       [nN])   return 1 ;;
       *)      echo_nl "${TXT_ANSWYN}"
   esac
 done
}

############
root_setup()
############
{
 echo "${TXT_ROOTINFO}"
 echo "${TXT_ROOTSETUP}" ; askyn && {
                                   break ; } ;
}

###############
weiter_mit_cr()
###############
{
  echo_nl "${TXT_CONTABORT}"
  read dummy
}




stlfiles="`find ${cadstl} -type f -print`"
sysfiles="db.sys obfz.sys osyntax.sys plotstr.sys referenz.sys schraff.sys"

init_text_messages

if [ ${setup_global} = 0 ]
then
  ID=`id | grep root`
  if [ "${ID}" != "" ]
  then
    root_setup
  fi
  owndirs="${owndb} ${owndxf} ${ownicn} ${ownstl} ${ownsys} ${owntmp} ${ownzne}"
  _privatdirs="${PRIVAT_RED} ${PRIVAT_HIS} ${PRIVAT_FEL} ${PRIVAT_MOD}"
  privatdirs="${_privatdirs} ${PRIVAT_PRJ}"
  sisdirs="${PRIVAT_HOME} ${owndirs} ${privatdirs}"
  stldir=${ownstl}
  sysdir=${ownsys}
  mode=755
  $TXTCMD_USETUP
else
  glbdirs="${glbdb} ${glbdxf} ${glbicn} ${glbstl} ${glbsys} ${glbzne}"
  _globaldirs="${GLOBAL_RED} ${GLOBAL_HIS} ${GLOBAL_FEL} ${GLOBAL_MOD}"
  globaldirs="${_globaldirs} ${GLOBAL_PRJ}"
  sisdirs="${GLOBAL_HOME} ${glbdirs} ${globaldirs}"
  stldir=${glbstl}
  sysdir=${glbsys}
  mode=777
  $TXTCMD_GSETUP
fi

weiter_mit_cr

echo
echo "${TXT_MKDIRS}"
echo
for dir in ${sisdirs}
do
  case ${dir} in           # definitions SISCAD-P prior to VERSION 1.3-3
    ${ownicn}     ) olddir=${HOME}/icn ;;
    ${PRIVAT_RED} ) olddir=${HOME}/katalog ;;      # old ${LOKAL}
    ${ownsys}     ) olddir=${HOME}/sys ;;
    ${GLOBAL_RED} ) olddir=/home/katalog ;;        # old ${GLOBAL}
    *             ) olddir="no_old_dir" ;;
  esac
  d=`echo ${dir} | sed -e 's|/$||' `
  if [ -d ${olddir} ]
  then
    ln_dir ${olddir} ${d}
  else
    create_dir ${d} ${mode}
  fi
done


if [ ${setup_global} = 0 ]
then
  echo
  echo "${TXT_MKPROF}"
  echo
  for file in `find ${cadetc}/profiles -type f -print`
  do
    update_file ${file} ${HOME}
  done
fi


echo
echo "${TXT_CHKFILES} ${stldir} ..."
echo
for file in ${stlfiles}
do
  check_file ${file} ${stldir}
done


echo
echo "${TXT_CHKFILES} ${sysdir} ..."
echo
for file in ${sysfiles}
do
  check_file ${cadsys}/${file} ${sysdir}
done

echo
echo "${TXT_MKDEF} ${sysdir} ..."
echo
case ${OS} in  # update OS-specific file siscadp.def

   Linux) OK=1
          while [ "${OK}" = 1 ]  
          do
            $TXTCMD_WDWMGR
            read answ
            case ${answ} in
               1)  deffile=${cadsys}/siscadp.def.fvwm
                   OK=0
                   ;;
               2)  deffile=${cadsys}/siscadp.def.mwm
                   OK=0
                   ;;
               *)  echo "${TXT_ANSWERYN}"
                   ;;
            esac
          done ;;

       *) deffile=${cadsys}/siscadp.def ;;

esac # case ${OS}

TmpFile=/tmp/siscadp.def

cp ${deffile} ${TmpFile}
chmod 644  ${TmpFile}
update_file ${TmpFile} ${sysdir} 
rm -f ${TmpFile}



if [ ${setup_global} = 0 ]
then

  fgrep VERSION= ${INSTLOG} >${USEDLOG}  # Setup zu dieser Version OK 
  $TXTCMD_ENDUSETUP
  read dummy

else
  fgrep VERSION= ${INSTLOG} >${USEGLOG}  # Setup zu dieser Version OK 
  $TXTCMD_ENDGSETUP

fi

exit 0
