Hello, 

stock rc.d script:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh
#
# $OpenBSD: svscan.rc,v 1.1 2012/01/01 16:16:24 sthen Exp $

daemon="/usr/local/bin/svscan"
daemon_flags="/service/"

. /etc/rc.d/rc.subr

rc_bg=YES
rc_reload=NO

rc_cmd $1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
downside: freedt is a super-server, this script does not stop the real
services, nor the supervisor (supervise), just svscan. And it forces the
``service'' directory to be under ``/''.

my version
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh
#
# $OpenBSD: freedt.rc,v 1.2 2012/03/29 14:50:24 whoever Exp $

daemon="/usr/local/bin/svscan"
daemon_flags=${daemon_flags:-"/service/"}

. /etc/rc.d/rc.subr

rc_start() {
        type rc_pre >/dev/null && rc_pre
        ${rcexec} "/bin/csh -cf \"env PATH=${PATH}:/usr/local/bin/ \
            /usr/local/bin/svscan ${freedt_flags} &\""  > /dev/null
}
rc_reload() {
        /usr/local/bin/svc -h ${freedt_flags}/*
        /usr/local/bin/svc -h ${freedt_flags}/*/log
}
rc_stop() {
        pkill -f "^${pexp}"
        sleep 1
        /usr/local/bin/svc -d ${freedt_flags}/*
        /usr/local/bin/svc -d ${freedt_flags}/*/log
        sleep 1
        /usr/local/bin/svc -t ${freedt_flags}/*
        /usr/local/bin/svc -t ${freedt_flags}/*/log
        sleep 1
        /usr/local/bin/svc -X ${freedt_flags}/*
        /usr/local/bin/svc -X ${freedt_flags}/*/log
        sleep 1
        pkill -f "^supervise .*"
        type rc_post >/dev/null && rc_post || return 0
}

rc_cmd $1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
downside: longer, uglier.

bye, Marcus

Reply via email to