Merge branch 'vendor/DHCPCD'
[dragonfly.git] / etc / rc.d / localdaemons
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
12 name="localdaemons"
13 start_cmd="locald_start"
14 stop_cmd="locald_stop"
15
16 # Returns true (0) if the passed argument is a valid name
17 # for a script, false (1) otherwise.
18 #
19 valid_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
35 locald_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
83 locald_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
129 load_rc_config $name
130 run_rc_command "$1"