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