--- rpms/qpsmtpd/sme7/qpsmtpd-forkserver.rc 2007/06/12 17:16:13 1.1 +++ rpms/qpsmtpd/sme7/qpsmtpd-forkserver.rc 2007/06/14 19:18:15 1.2 @@ -11,6 +11,7 @@ # config: /etc/qpsmtpd # pidfile: /var/run/qpsmtpd-forkserver.pid + # Source function library. . /etc/init.d/functions . /etc/sysconfig/qpsmtpd-forkserver @@ -22,28 +23,67 @@ RETVAL=0 prog="qpsmtpd-forkserver" start() { + # cleanup environment a bit. + unset PERL_UNICODE + unset LANG + unset LC_TIME + unset LC_ALL + unset BASH_ENV + unset ENV + unset CDPATH + unset IFS + echo -n $"Starting $prog: " trap "" 1 - nohup qpsmtpd-forkserver $QPSMTPD_OPTIONS 2>&1 | - /usr/local/bin/ts $TS_OPTIONS & + daemon $prog --detach $QPSMTPD_OPTIONS RETVAL=$? echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/qpsmtpd-forkserver + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stopping $prog: " - killproc qpsmtpd-forkserver + killproc $prog RETVAL=$? echo - [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/qpsmtpd-forkserver + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } -rhstatus() { - status qpsmtpd-forkserver -} +# functions status() uses pidof, which doesn't work with (?) scripts +qpstatus() { + local base=${1##*/} + local pid + + # Test syntax. + if [ "$#" = 0 ] ; then + echo $"Usage: status {program}" + return 1 + fi + + # Use "/var/run/*.pid" file for pid + if [ -f /var/run/${base}.pid ] ; then + read pid < /var/run/${base}.pid + if [ -n "$pid" ]; then + /bin/ps -p $pid >/dev/null + if [ $? -eq 0 ]; then + echo $"${base} (pid $pid) is running..." + return 0 + else + echo $"${base} dead but pid file exists" + return 1 + fi + fi + fi + # See if /var/lock/subsys/${base} exists + if [ -f /var/lock/subsys/${base} ]; then + echo $"${base} dead but subsys locked" + return 2 + fi + echo $"${base} is stopped" + return 3 +} restart() { stop @@ -69,10 +109,10 @@ case "$1" in reload ;; status) - rhstatus + qpstatus qpsmtpd-forkserver ;; condrestart) - [ -f /var/lock/subsys/qpsmtpd-forkserver ] && restart || : + [ -f /var/lock/subsys/$prog ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"