xref: /dragonfly/etc/rc.d/localdaemons (revision e6d22e9b)
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