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# REQUIRE: abi 8# BEFORE: securelevel 9# KEYWORD: shutdown 10 11. /etc/rc.subr 12 13name="localdaemons" 14start_cmd="locald_start" 15stop_cmd="locald_stop" 16 17# Returns true (0) if the passed argument is a valid name 18# for a script, false (1) otherwise. 19# 20valid_scriptname() 21{ 22 case ${1##*.} in 23 orig) 24 return 1 25 ;; 26 sample) 27 return 1 28 ;; 29 dist) 30 return 1 31 ;; 32 esac 33 return 0 34} 35 36locald_start() 37{ 38 # For each dir in $local_startup, search for init scripts matching * 39 # 40 case ${local_startup} in 41 [Nn][Oo] | '') 42 ;; 43 *) 44 echo -n 'Local package initialization:' 45 slist="" 46 if [ -z "${script_name_sep}" ]; then 47 script_name_sep=" " 48 fi 49 for dir in ${local_startup}; do 50 if [ -d "${dir}" ]; then 51 for script in ${dir}/*; do 52 if valid_scriptname ${script}; then 53 slist="${slist}${script_name_sep}${script}" 54 fi 55 done 56 fi 57 done 58 script_save_sep="$IFS" 59 IFS="${script_name_sep}" 60 sortedslist=`rcorder -s nostart /etc/rc.d/* ${slist} 2>/dev/null | grep -v "^/etc/rc.d/" | tr '\n' "$IFS"`; 61 for script in ${sortedslist}; 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 sortedslist=`rcorder -s nostart /etc/rc.d/* ${slist} 2>/dev/null | grep -v "^/etc/rc.d/" | tr '\n' "$IFS"`; 101 for script in `reverse_list ${sortedslist}`; do 102 if [ -x "${script}" ]; then 103 (set -T 104 trap 'exit 1' 2 105 ${script} stop) 106 fi 107 done 108 IFS="${script_save_sep}" 109 echo '.' 110 ;; 111 esac 112} 113 114load_rc_config $name 115run_rc_command "$1" 116