1#!/bin/sh 2# 3# $FreeBSD: src/etc/rc.d/localdaemons,v 1.2 2003/05/05 15:38:41 mtm Exp $ 4# 5 6# PROVIDE: localdaemons 7# BEFORE: securelevel 8# KEYWORD: shutdown 9 10. /etc/rc.subr 11 12name="localdaemons" 13start_cmd="locald_start" 14stop_cmd="locald_stop" 15 16# Returns true (0) if the passed argument is a valid name 17# for a script, false (1) otherwise. 18# 19valid_scriptname() 20{ 21 case ${1##*.} in 22 orig) 23 return 1 24 ;; 25 sample) 26 return 1 27 ;; 28 dist) 29 return 1 30 ;; 31 esac 32 return 0 33} 34 35locald_start() 36{ 37 # For each dir in $local_startup, search for init scripts matching * 38 # 39 case ${local_startup} in 40 [Nn][Oo] | '') 41 ;; 42 *) 43 echo -n 'Local package initialization:' 44 slist="" 45 if [ -z "${script_name_sep}" ]; then 46 script_name_sep=" " 47 fi 48 for dir in ${local_startup}; do 49 if [ -d "${dir}" ]; then 50 for script in ${dir}/*; do 51 if valid_scriptname ${script}; then 52 slist="${slist}${script_name_sep}${script}" 53 fi 54 done 55 fi 56 done 57 58 # If the firstboot sentinel doesn't exist, we want to 59 # skip firstboot scripts. 60 # 61 if ! [ -e /firstboot ]; then 62 skip_firstboot="-s firstboot" 63 fi 64 65 script_save_sep="$IFS" 66 IFS="${script_name_sep}" 67 sortedslist=`rcorder -s nostart ${skip_firstboot} /etc/rc.d/* ${slist} 2>/dev/null | grep -v "^/etc/rc.d/" | tr '\n' "$IFS"`; 68 for script in ${sortedslist}; do 69 if [ -x "${script}" ]; then 70 (set -T 71 trap 'exit 1' 2 72 ${script} start) 73 elif [ -f "${script}" -o -L "${script}" ]; then 74 echo -n " (skipping ${script##*/}, not executable)" 75 fi 76 done 77 IFS="${script_save_sep}" 78 echo '.' 79 ;; 80 esac 81} 82 83locald_stop() 84{ 85 echo -n 'Shutting down daemon processes:' 86 87 # For each dir in $local_startup, search for init scripts matching * 88 case ${local_startup} in 89 [Nn][Oo] | '') 90 ;; 91 *) 92 slist="" 93 if [ -z "${script_name_sep}" ]; then 94 script_name_sep=" " 95 fi 96 for dir in ${local_startup}; do 97 if [ -d "${dir}" ]; then 98 for script in ${dir}/*; do 99 if valid_scriptname ${script}; then 100 slist="${slist}${script_name_sep}${script}" 101 fi 102 done 103 fi 104 done 105 106 # If the firstboot sentinel doesn't exist, we want to 107 # skip firstboot scripts. 108 # 109 if ! [ -e /firstboot ]; then 110 skip_firstboot="-s firstboot" 111 fi 112 113 script_save_sep="$IFS" 114 IFS="${script_name_sep}" 115 sortedslist=`rcorder -s nostart ${skip_firstboot} /etc/rc.d/* ${slist} 2>/dev/null | grep -v "^/etc/rc.d/" | tr '\n' "$IFS"`; 116 for script in `reverse_list ${sortedslist}`; do 117 if [ -x "${script}" ]; then 118 (set -T 119 trap 'exit 1' 2 120 ${script} stop) 121 fi 122 done 123 IFS="${script_save_sep}" 124 echo '.' 125 ;; 126 esac 127} 128 129load_rc_config $name 130run_rc_command "$1" 131