Changeset View
Changeset View
Standalone View
Standalone View
libexec/rc/rc.subr
Show First 20 Lines • Show All 916 Lines • ▼ Show 20 Lines | quiet*) # "quiet" prefix; omit some messages | ||||
rc_arg=${rc_arg#${_rc_prefix}} | rc_arg=${rc_arg#${_rc_prefix}} | ||||
rc_quiet=yes | rc_quiet=yes | ||||
;; | ;; | ||||
esac | esac | ||||
eval _override_command=\$${name}_program | eval _override_command=\$${name}_program | ||||
command=${_override_command:-$command} | command=${_override_command:-$command} | ||||
_keywords="start stop restart rcvar enabled describe extracommands $extra_commands" | _keywords="start stop restart rcvar enable disable delete enabled describe extracommands $extra_commands" | ||||
rc_pid= | rc_pid= | ||||
_pidcmd= | _pidcmd= | ||||
_procname=${procname:-${command}} | _procname=${procname:-${command}} | ||||
# setup pid check command | # setup pid check command | ||||
if [ -n "$_procname" ]; then | if [ -n "$_procname" ]; then | ||||
if [ -n "$pidfile" ]; then | if [ -n "$pidfile" ]; then | ||||
_pidcmd='rc_pid=$(check_pidfile '"$pidfile $_procname $command_interpreter"')' | _pidcmd='rc_pid=$(check_pidfile '"$pidfile $_procname $command_interpreter"')' | ||||
Show All 38 Lines | run_rc_command() | ||||
fi | fi | ||||
[ -z "$autoboot" ] && eval $_pidcmd # determine the pid if necessary | [ -z "$autoboot" ] && eval $_pidcmd # determine the pid if necessary | ||||
for _elem in $_keywords; do | for _elem in $_keywords; do | ||||
if [ "$_elem" != "$rc_arg" ]; then | if [ "$_elem" != "$rc_arg" ]; then | ||||
continue | continue | ||||
fi | fi | ||||
# if ${rcvar} is set, $1 is not "rcvar" and not "describe" | # if ${rcvar} is set, $1 is not "rcvar", "describe", | ||||
# and ${rc_pid} is not set, then run | # "enable" or "delete", and ${rc_pid} is not set, run: | ||||
# checkyesno ${rcvar} | # checkyesno ${rcvar} | ||||
# and return if that failed | # and return if that failed | ||||
# | # | ||||
if [ -n "${rcvar}" -a "$rc_arg" != "rcvar" -a "$rc_arg" != "stop" \ | if [ -n "${rcvar}" -a "$rc_arg" != "rcvar" -a "$rc_arg" != "stop" \ | ||||
-a "$rc_arg" != "delete" -a "$rc_arg" != "enable" \ | |||||
-a "$rc_arg" != "describe" ] || | -a "$rc_arg" != "describe" ] || | ||||
[ -n "${rcvar}" -a "$rc_arg" = "stop" -a -z "${rc_pid}" ]; then | [ -n "${rcvar}" -a "$rc_arg" = "stop" -a -z "${rc_pid}" ]; then | ||||
if ! checkyesno ${rcvar}; then | if ! checkyesno ${rcvar}; then | ||||
if [ -n "${rc_quiet}" ]; then | if [ -n "${rc_quiet}" ]; then | ||||
return 0 | return 0 | ||||
fi | fi | ||||
echo -n "Cannot '${rc_arg}' $name. Set ${rcvar} to " | echo -n "Cannot '${rc_arg}' $name. Set ${rcvar} to " | ||||
echo -n "YES in /etc/rc.conf or use 'one${rc_arg}' " | echo -n "YES in /etc/rc.conf or use 'one${rc_arg}' " | ||||
Show All 29 Lines | for _elem in $_keywords; do | ||||
describe) | describe) | ||||
if [ -n "$desc" ]; then | if [ -n "$desc" ]; then | ||||
echo "$desc" | echo "$desc" | ||||
fi | fi | ||||
;; | ;; | ||||
extracommands) | extracommands) | ||||
echo "$extra_commands" | echo "$extra_commands" | ||||
;; | |||||
enable) | |||||
_out=$(/usr/sbin/sysrc -vs "$name" "$rcvar=YES") && | |||||
echo "$name enabled in ${_out%%:*}" | |||||
;; | |||||
disable) | |||||
_out=$(/usr/sbin/sysrc -vs "$name" "$rcvar=NO") && | |||||
echo "$name disabled in ${_out%%:*}" | |||||
;; | |||||
delete) | |||||
_files= | |||||
for _file in $(sysrc -lEs "$name"); do | |||||
_out=$(sysrc -Fif $_file "$rcvar") && _files="$_files $_file" | |||||
done | |||||
/usr/sbin/sysrc -x "$rcvar" && echo "$rcvar deleted in ${_files# }" | |||||
# delete file in rc.conf.d if desired and empty. | |||||
checkyesno service_delete_empty || _files= | |||||
for _file in $_files; do | |||||
[ "$_file" = "${_file#*/rc.conf.d/}" ] && continue | |||||
[ $(/usr/bin/stat -f%z $_file) -gt 0 ] && continue | |||||
/bin/rm "$_file" && echo "Empty file $_file removed" | |||||
done | |||||
;; | ;; | ||||
status) | status) | ||||
_run_rc_precmd || return 1 | _run_rc_precmd || return 1 | ||||
if [ -n "$rc_pid" ]; then | if [ -n "$rc_pid" ]; then | ||||
echo "${name} is running as pid $rc_pid." | echo "${name} is running as pid $rc_pid." | ||||
else | else | ||||
echo "${name} is not running." | echo "${name} is not running." | ||||
▲ Show 20 Lines • Show All 1,101 Lines • Show Last 20 Lines |