#!/bin/sh
#
# Start/Stop AVIRA Automatic Internet Updater
#
# Copyright (c) 2002-2004 AVIRA GmbH
#

PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"

SERVICENAME="aiupdater"
DAEMONNAME="avira"
AVDIR="/usr/lib/AVIRA"

DAEMON="$AVDIR/$DAEMONNAME"

OS=`uname | tr "[:upper:]" "[:lower:]"`
OSREL="`uname -r`"

case "${OS}" in
	sunos)
		ECHO="/usr/lib/AVIRA/echo_sunos"
		if [ ! -x "${ECHO}" ]
		then
			ECHO="echo"
		fi
		;;
	*)
		ECHO="echo"
		;;
esac

case "${OS}" in
	linux)
		if [ "${OSREL#2.6.}" != "${OSREL}" ]; then
			OS="linux26"
		fi

		# Determine the Linux distribution type
		DISTRO="unknown"
		
		[ -e /etc/redhat-release ] && DISTRO="redhat"
		[ -e /etc/mandrake-release -o -e /etc/mandrakelinux-release ] \
					&& DISTRO="mandrake"
		[ -e /etc/fedora-release ] && DISTRO="fedora"
		[ -e /etc/SuSE-release ] && DISTRO="suse"
		[ -e /etc/debian_version ] && DISTRO="debian"
		[ -e /etc/slackware-version ] && DISTRO="slackware"
		[ -e /etc/gentoo-release ] && DISTRO="gentoo"
		[ -e /etc/turbolinux-release ] && DISTRO="turbolinux"
		;;
	
	*)
		DISTRO="$OS"
		;;
esac

case "${DISTRO}" in
	redhat|mandrake|fedora)
		LOCKSUBSYS="/var/lock/subsys/$SERVICENAME"
		;;
esac

getPROCESSLIST()
{
	PROCESSLIST=""

	case "${OS}" in
		sunos)
			for PROC in `ps -Ao pid,args | grep ${DAEMONNAME}.*[-]-updater-daemon`
			do
				if [ -z "`$ECHO ${PROC} | sed -e s/[0-9]//g`" ]
				then
					PROCESSLIST="${PROCESSLIST} ${PROC}"
				fi
			done
			;;
		*)
			for PROC in `ps axw -o 'pid= command=' | grep ${DAEMONNAME}.*[-]-updater-daemon`
			do
				if [ -z "`$ECHO ${PROC} | sed -e s/[0-9]//g`" ]
				then
					PROCESSLIST="${PROCESSLIST} ${PROC}"
				fi
			done
			;;
	esac
}

case "$1" in
	start)
		$ECHO -n "Starting AVIRA: aiupdater"

		if [ ! -x "$DAEMON" ]
		then
			$ECHO " (FAILED)"
			$ECHO " "
			$ECHO "error: $DAEMON is missing"
			$ECHO " "
			exit 1
		fi

		$DAEMON --updater-daemon -q

		if [ $? -ne 0 ]
		then
			$ECHO " (FAILED)"
			$ECHO " "
			$ECHO "error: $DAEMONNAME failed to start"
			$ECHO "See log files for details."
			$ECHO " "
			exit 1
		fi

		[ -z "$LOCKSUBSYS" ] || touch "$LOCKSUBSYS"

		$ECHO "."
		;;
	stop)
		$ECHO -n "Stopping AVIRA: aiupdater"

		getPROCESSLIST
		for PROC in $PROCESSLIST
		do
			kill -15 $PROC > /dev/null 2>&1
		done

		[ -z "$LOCKSUBSYS" ] || rm -rf "$LOCKSUBSYS"

		$ECHO "."
		;;
	restart)
		$0 stop
		$0 start
		;;
	status)
		$ECHO -n "AVIRA Status: aiupdater "

		getPROCESSLIST
		if [ ! -z "$PROCESSLIST" ]
		then
			$ECHO -n "(running)"
			RC=0
		else
			$ECHO -n "(not running)"
			RC=3
		fi
		$ECHO "."
		exit $RC
		;;
	*)
		$ECHO "usage: $0 {start|stop|restart|status}"
		exit 1
		;;
esac

exit 0
