#!/bin/sh
#
# chkconfig: - 91 35
# description: Starts and stops the Samba smbd and nmbd daemons \
#	       used to provide SMB network services.
#
# pidfile: /var/run/samba/smbd.pid
# pidfile: /var/run/samba/nmbd.pid
# config:  /etc/samba/smb.conf


# Source function library.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi

# Avoid using root's TMPDIR
unset TMPDIR

# Source networking configuration.
. /etc/sysconfig/network

if [ -f /etc/sysconfig/samba ]; then
   . /etc/sysconfig/samba
fi

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# Check that smb.conf exists.
[ -f /etc/samba/smb.conf ] || exit 0

# Check that we can write to it... so non-root users stop here
[ -w /etc/samba/smb.conf ] || exit 0

# Check whether "netbios disabled" is true
ISNETBIOSDISABLED=$(testparm -s 2>/dev/null | \
	sed -n '/\[global\]/,/^$/p' | \
	grep "disable netbios = Yes" | \
	awk 'BEGIN{FS=" = "}{print $2}')


RETVAL=0


start() {
	KIND="SMB"
	echo -n $"Starting $KIND services: "
	daemon smbd $SMBDOPTIONS
	RETVAL=$?
	echo
	KIND="NMB"
	if [ x"$ISNETBIOSDISABLED" != x"Yes" ]; then
		echo -n $"Starting $KIND services: "
		daemon nmbd $NMBDOPTIONS
		RETVAL2=$?
		echo
		[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb || \
			RETVAL=1
	else
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/smb || \
			RETVAL=1
	fi
	return $RETVAL
}	

stop() {
	KIND="SMB"
	echo -n $"Shutting down $KIND services: "
	killproc smbd
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/run/smbd.pid
	echo
	KIND="NMB"
	if [ x"$ISNETBIOSDISABLED" != x"Yes" ]; then
		echo -n $"Shutting down $KIND services: "
		killproc nmbd 
		RETVAL2=$?
		[ $RETVAL2 -eq 0 ] && rm -f /var/run/nmbd.pid
		[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/smb 
		echo ""
	else
		[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/smb 
		echo ""
	fi
	return $RETVAL
}	

restart() {
	stop
	start
}	

reload() {
        echo -n $"Reloading smb.conf file: "
	killproc smbd -HUP
	RETVAL=$?
	echo
	return $RETVAL
}	

rhstatus() {
	status smbd
	status nmbd
}	

case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart)
  	restart
	;;
  reload)
  	reload
	;;
  status)
  	rhstatus
	;;
  condrestart)
  	[ -f /var/lock/subsys/smb ] && restart || :
	;;
  *)
	echo $"Usage: $0 {start|stop|restart|reload|status|condrestart}"
	exit 1
esac

exit $?
