--- embedaddon/smartmontools/smartd.freebsd.initd.in 2012/02/21 16:32:16 1.1.1.1 +++ embedaddon/smartmontools/smartd.freebsd.initd.in 2012/10/09 09:36:45 1.1.1.2 @@ -1,71 +1,70 @@ #!/bin/sh -# $FreeBSD: ports/sysutils/smartmontools/files/smartd.in,v 1.2 2010/03/27 00:15:05 dougb Exp $ +# $FreeBSD: ports/sysutils/smartmontools/files/smartd.in,v 1.4 2012/02/15 08:46:57 dougb Exp $ +# # PROVIDE: smartd -# REQUIRE: DAEMON -# BEFORE: LOGIN +# REQUIRE: LOGIN # KEYWORD: shutdown nojail - +# # Define these smartd_* variables in one of these files: -# /etc/rc.conf -# /etc/rc.conf.local -# /etc/rc.conf.d/smartd +# /etc/rc.conf +# /etc/rc.conf.local +# /etc/rc.conf.d/smartd # # DO NOT CHANGE THESE DEFAULT VALUES HERE -# -smartd_enable="${smartd_enable-NO}" -smartd_pidfile="/var/run/smartd.pid" . /etc/rc.subr -name="smartd" -rcvar=`set_rcvar` +name=smartd +rcvar=smartd_enable + +load_rc_config smartd + +: ${smartd_enable:="NO"} + +required_files=${smartd_config:="/usr/local/etc/smartd.conf"} +pidfile=${smartd_pidfile:="/var/run/smartd.pid"} + command="/usr/local/sbin/smartd" +command_args="-c ${required_files} -p ${pidfile}" + extra_commands="reload report" reload_cmd="smartd_reload" report_cmd="smartd_report" +start_precmd=smartd_prestart + +smartd_prestart() +{ + case "${smartd_flags}" in + -p*|*-p*) + err 1 'smartd_flags includes the -p option, use smartd_pidfile instead' + ;; + esac +} + smartd_reload() { - rc_pid=$(check_pidfile $pidfile $command) - if [ -z "$rc_pid" ]; then - [ -n "$rc_fast" ] && return 0 - _run_rc_notrunning - return 1 - fi - echo 'Reloading smartd.' - kill -HUP $rc_pid + local status + + if ! status=`run_rc_command status 2>&1`; then + echo $status + return 1 + fi + echo 'Reloading smartd.' + kill -HUP $rc_pid } smartd_report() { - rc_pid=$(check_pidfile $pidfile $command) - if [ -z "$rc_pid" ]; then - [ -n "$rc_fast" ] && return 0 - _run_rc_notrunning - return 1 - fi - echo 'Checking SMART devices now.' - kill -USR1 $rc_pid -} + local status -load_rc_config $name - -: ${smartd_config="/usr/local/etc/smartd.conf"} -: ${smartd_flags="-c ${smartd_config}"} - -pidfile="${smartd_pidfile}" -required_files="${smartd_config}" - -case "${smartd_flags}" in -*-p\ *) - echo "ERROR: \$smartd_flags includes -p option." \ - "Please use \$smartd_pidfile instead." - exit 1 - ;; -*) - smartd_flags="-p ${pidfile} ${smartd_flags}" - ;; -esac + if ! status=`run_rc_command status 2>&1`; then + echo $status + return 1 + fi + echo 'Checking SMART devices now.' + kill -USR1 $rc_pid +} run_rc_command "$1"