#!/bin/bash
#
# (C) Copyright IBM Corporation 2011
#
# chkconfig: 35 95 5
# description: TSM Client Acceptor Daemon
#
### BEGIN INIT INFO
# Provides: dsmcad
# Required-Start: $local_fs $remote_fs $network
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: TSM Client Acceptor Daemon
# Description: Start dsmcad to enable scheduler and Web GUI.
### END INIT INFO

DSMCAD_DIR=/opt/tivoli/tsm/client/ba/bin
DSMCAD_BIN=$DSMCAD_DIR/dsmcad
if [ ! -x $DSMCAD_BIN ]
then
   echo "$DSMCAD_BIN is not installed"
   if [ "$1" = "stop" ]
   then
      exit 0
   else
      exit 5
   fi
fi

if [ -f /etc/redhat-release ]
then
   . /etc/init.d/functions

   start_()
   {
      echo -n "Starting dsmcad:"
      cd $DSMCAD_DIR
      daemon $DSMCAD_BIN
      echo
   }

   stop_()
   {
      echo -n "Stopping dsmcad:"
      killproc -d 10 dsmcad
      echo
      return $?
   }
   
   status_()
   {
      status dsmcad
   }

elif [ -f /etc/SuSE-release ]
then
   . /etc/rc.status

   rc_reset

   start_()
   {
      echo -n "Starting dsmcad:"
      cd $DSMCAD_DIR
      startproc $DSMCAD_BIN
      rc_status -v
   }

   stop_()
   {
      echo -n "Stopping dsmcad:"
      killproc $DSMCAD_BIN
      rc_status -v
   }
   
   status_()
   {
      echo -n "Checking dsmcad:"
      checkproc $DSMCAD_BIN
      rc_status -v
   }

else
   # Debian / Ubuntu
 
. /lib/lsb/init-functions
 
   export DSM_DIR=/opt/tivoli/tsm/client/ba/bin
   export DSM_CONFIG=/opt/tivoli/tsm/client/ba/bin/dsm.opt
   DESC="TSM Client Acceptor Daemon"

# Probleme mit ungültigen Zeichen in Dateinamen
#
# In der UTF8-Locale meldet die Sicherung Fehler bei Dateinamen mit ISO-Zeichen,
# aber umgekehrt geht in der ISO-Locale die Sicherung von Dateien mit
# UTF8-Zeichen im Namen ohne Probleme. Falls z.B. Dateinamen mit deutschen
# Umlauten oder Eszet im ISO-Zeichensatz verwendet werden, aber die ISO-Locale
# "de_DE" nicht eingerichtet ist, kann dies wie folgt nachgeholt werden.
#
# Unter Ubuntu stehen die verwendeten Locale in "/var/lib/locales/supported.d/de".
# Die dort fehlende Locale "de_DE" wird wie folgt ergänzt:
#
# echo 'de_DE ISO-8859-1' >> /var/lib/locales/supported.d/de
# dpkg-reconfigure locales
#
# Unter Debian muss in der Datei "/etc/locale.gen" bei der fehlenden Locale an
# entsprechender Stelle das Zeichen "#" weggenommen und anschließend das
# Kommando "locale-gen" aufgerufen werden. Alternativ kann die Locale auch bei
# dem Kommando "dpkg-reconfigure locales" interaktiv ausgewählt werden.
#
# Anschließend muss noch in dem Start/Stop-Skript "/etc/init.d/dsmcad" die
# Verwendung der Locale "de_DE" mit der folgenden Zeile aktiviert werden:
#
# export LANG=de_DE

   rootcheck() {
   if [ $UID -ne 0 ] ; then
      echo "You must be a root user" 2>&1
      exit 1
   fi
   }

   pidof_dsmcad() {
      PID=$(pidof $DSMCAD_BIN)
      if [ ! $PID ]; then
         return 1
      fi
      echo $PID
   } 

   start_() {
      rootcheck
      log_daemon_msg "Starting" $DESC $DSMCAD_BIN
      if [ ! $(pidof_dsmcad) ]; then
         cd $DSMCAD_DIR
         $DSMCAD_BIN > /dev/null 2>&1
      fi
      if [ $(pidof dsmcad) ]; then
         log_end_msg 0
      else
         log_end_msg 1
      fi
   }

   stop_() {
      rootcheck
      log_daemon_msg "Stopping" $DESC $DSMCAD_BIN
      pkill -f $DSMCAD_BIN
      sleep 2
      if [ $(pidof $DSMCAD_BIN) ]; then
         log_end_msg 1
      else
         log_end_msg 0
      fi
   }

   status_() {
      if [ $(pidof_dsmcad) ]; then
         echo "$DESC is running"
      else
         echo "$DESC is not running"
      fi
   }

fi

case "$1" in
   start)
      start_
   ;;

   stop)
      stop_
   ;;

   restart)
      stop_
      start_
   ;;

   status)
      status_
   ;;

   *)
      echo "Usage: $0 {start|stop|restart|status}"
      exit 1
   ;;
esac


