xref: /freebsd/libexec/rc/rc.d/localpkg (revision 0696600c41600d80bcd993bfd8e675d0ae6951fe)
1*0696600cSBjoern A. Zeeb#!/bin/sh
2*0696600cSBjoern A. Zeeb#
3*0696600cSBjoern A. Zeeb# $FreeBSD$
4*0696600cSBjoern A. Zeeb#
5*0696600cSBjoern A. Zeeb
6*0696600cSBjoern A. Zeeb# PROVIDE: localpkg
7*0696600cSBjoern A. Zeeb# REQUIRE: abi
8*0696600cSBjoern A. Zeeb# BEFORE:  securelevel
9*0696600cSBjoern A. Zeeb# KEYWORD: shutdown
10*0696600cSBjoern A. Zeeb
11*0696600cSBjoern A. Zeeb. /etc/rc.subr
12*0696600cSBjoern A. Zeeb
13*0696600cSBjoern A. Zeebname="localpkg"
14*0696600cSBjoern A. Zeebdesc="Run local init scripts"
15*0696600cSBjoern A. Zeebstart_cmd="pkg_start"
16*0696600cSBjoern A. Zeebstop_cmd="pkg_stop"
17*0696600cSBjoern A. Zeeb
18*0696600cSBjoern A. Zeebpkg_start()
19*0696600cSBjoern A. Zeeb{
20*0696600cSBjoern A. Zeeb	local initdone
21*0696600cSBjoern A. Zeeb
22*0696600cSBjoern A. Zeeb	# For each dir in $local_startup, search for init scripts matching *.sh
23*0696600cSBjoern A. Zeeb	#
24*0696600cSBjoern A. Zeeb	case ${local_startup} in
25*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
26*0696600cSBjoern A. Zeeb		;;
27*0696600cSBjoern A. Zeeb	*)
28*0696600cSBjoern A. Zeeb		initdone=
29*0696600cSBjoern A. Zeeb		find_local_scripts_old
30*0696600cSBjoern A. Zeeb		for script in ${zlist} ${slist}; do
31*0696600cSBjoern A. Zeeb			if [ -z "${initdone}" -a -f "${script}" ]; then
32*0696600cSBjoern A. Zeeb				echo -n 'Local package initialization:'
33*0696600cSBjoern A. Zeeb				initdone=yes
34*0696600cSBjoern A. Zeeb			fi
35*0696600cSBjoern A. Zeeb			if [ -x "${script}" ]; then
36*0696600cSBjoern A. Zeeb				(set -T
37*0696600cSBjoern A. Zeeb				trap 'exit 1' 2
38*0696600cSBjoern A. Zeeb				${script} start)
39*0696600cSBjoern A. Zeeb			elif [ -f "${script}" -o -L "${script}" ]; then
40*0696600cSBjoern A. Zeeb				echo -n " (skipping ${script}, not executable)"
41*0696600cSBjoern A. Zeeb			fi
42*0696600cSBjoern A. Zeeb		done
43*0696600cSBjoern A. Zeeb		[ -n "${initdone}" ] && echo '.'
44*0696600cSBjoern A. Zeeb		;;
45*0696600cSBjoern A. Zeeb	esac
46*0696600cSBjoern A. Zeeb}
47*0696600cSBjoern A. Zeeb
48*0696600cSBjoern A. Zeebpkg_stop()
49*0696600cSBjoern A. Zeeb{
50*0696600cSBjoern A. Zeeb	local initdone
51*0696600cSBjoern A. Zeeb
52*0696600cSBjoern A. Zeeb	case ${local_startup} in
53*0696600cSBjoern A. Zeeb	[Nn][Oo] | '')
54*0696600cSBjoern A. Zeeb		;;
55*0696600cSBjoern A. Zeeb	*)
56*0696600cSBjoern A. Zeeb		initdone=
57*0696600cSBjoern A. Zeeb		find_local_scripts_old
58*0696600cSBjoern A. Zeeb		for script in `reverse_list ${slist} ${zlist}`; do
59*0696600cSBjoern A. Zeeb			if [ -z "${initdone}" -a -f "${script}" ]; then
60*0696600cSBjoern A. Zeeb				echo -n 'Shutting down local packages:'
61*0696600cSBjoern A. Zeeb				initdone=yes
62*0696600cSBjoern A. Zeeb			fi
63*0696600cSBjoern A. Zeeb			if [ -x "${script}" ]; then
64*0696600cSBjoern A. Zeeb				if [ `sysctl -n debug.bootverbose` -eq 1 ]; then
65*0696600cSBjoern A. Zeeb					echo "==>" ${script}
66*0696600cSBjoern A. Zeeb				fi
67*0696600cSBjoern A. Zeeb				(set -T
68*0696600cSBjoern A. Zeeb				trap 'exit 1' 2
69*0696600cSBjoern A. Zeeb				${script} stop)
70*0696600cSBjoern A. Zeeb			fi
71*0696600cSBjoern A. Zeeb		done
72*0696600cSBjoern A. Zeeb		[ -n "${initdone}" ] && echo '.'
73*0696600cSBjoern A. Zeeb		;;
74*0696600cSBjoern A. Zeeb	esac
75*0696600cSBjoern A. Zeeb}
76*0696600cSBjoern A. Zeeb
77*0696600cSBjoern A. Zeebload_rc_config $name
78*0696600cSBjoern A. Zeebrun_rc_command "$1"
79