Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
[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 # $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
14 name="localdaemons"
15 start_cmd="locald_start"
16 stop_cmd="locald_stop"
17
18 # Returns true (0) if the passed argument is a valid name
19 # for a script, false (1) otherwise.
20 #
21 valid_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
37 locald_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
76 locald_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
113 load_rc_config $name
114 run_rc_command "$1"