Magellan Linux

Contents of /trunk/initscripts/busybox/sbin/rc-config

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1357 - (show annotations) (download)
Sat Jun 4 21:05:40 2011 UTC (12 years, 10 months ago) by niro
File size: 4181 byte(s)
copied from original repos
1 #!/bin/bash
2 # $Header: /home/cvsd/magellan-cvs/magellan-src/busybox-initscripts/sbin/rc-config,v 1.3 2008-06-19 12:37:36 niro Exp $
3
4 RC_INIT_BASE=${MROOT}/etc/init.d
5 RC_EXCLUDE="rc functions template splash-functions udev mdev"
6
7 VERSION=0.3
8
9 get_run_levels()
10 {
11 local SCRIPT
12 local ALL_LEVELS
13
14 SCRIPT=${RC_INIT_BASE}/$1
15 ALL_LEVELS=$(grep -i "#%rlevels:" ${SCRIPT} | sed -e 's/#%rlevels://g')
16
17 echo ${ALL_LEVELS}
18
19 return 0
20 }
21
22
23 get_needs()
24 {
25 local SCRIPT
26 local ALL_LEVELS
27
28 SCRIPT=${RC_INIT_BASE}/$1
29 ALL_LEVELS=$(grep -i "#%needs:" ${SCRIPT} | sed -e 's/#%needs://g')
30
31 echo ${ALL_LEVELS}
32
33 return 0
34 }
35
36 get_before()
37 {
38 local SCRIPT
39 local ALL_LEVELS
40
41 SCRIPT=${RC_INIT_BASE}/$1
42 ALL_LEVELS=$(grep -i "#%before:" ${SCRIPT} | sed -e 's/#%before://g')
43
44 echo ${ALL_LEVELS}
45
46 return 0
47 }
48
49 get_after()
50 {
51 local SCRIPT
52 local ALL_LEVELS
53
54 SCRIPT=${RC_INIT_BASE}/$1
55 ALL_LEVELS=$(grep -i "#%after:" ${SCRIPT} | sed -e 's/#%after://g')
56
57 echo ${ALL_LEVELS}
58
59 return 0
60 }
61
62 get_start()
63 {
64 local SCRIPT
65 local ALL_LEVELS
66
67 SCRIPT=${RC_INIT_BASE}/$1
68 ALL_LEVELS=$(grep -i "#%start:" ${SCRIPT} | sed -e 's/#%start://g')
69
70 echo ${ALL_LEVELS}
71
72 return 0
73 }
74
75 get_stop()
76 {
77 local SCRIPT
78 local ALL_LEVELS
79
80 SCRIPT=${RC_INIT_BASE}/$1
81 ALL_LEVELS=$(grep -i "#%stop:" ${SCRIPT} | sed -e 's/#%stop://g')
82
83 echo ${ALL_LEVELS}
84
85 return 0
86 }
87
88
89
90 rc_service_add()
91 {
92 RC_SERVICE=$1
93 RC_START=$(get_start ${RC_SERVICE})
94 RC_STOP=$(get_stop ${RC_SERVICE})
95
96 echo "Adding ${RC_SERVICE} to:"
97 for i in $(get_run_levels ${RC_SERVICE})
98 do
99 case ${i} in
100 # ignore these runlevels:
101 [1245]:[sk]) continue ;;
102
103 # start
104 ?:s)
105 [[ ${i} = 7:s ]] && i="sysinit:s"
106 [[ ${i} = 3:s ]] && i="boot:s"
107 [[ ${i} = 0:s ]] && i="shutdown:s"
108 echo -e "\t\t[rc${i/:s/}.d -> S${RC_START}]"
109 ln -snf ../init.d/${RC_SERVICE} \
110 ${MROOT}/etc/rc.d/rc${i/:s/}.d/S${RC_START}${RC_SERVICE}
111 ;;
112 # stop
113 ?:k)
114 [[ ${i} = 7:k ]] && i="sysinit:k"
115 [[ ${i} = 3:k ]] && i="boot:k"
116 [[ ${i} = 0:k ]] && i="shutdown:k"
117 echo -e "\t\t[rc${i/:k/}.d -> K${RC_STOP}]"
118 ln -snf ../init.d/${RC_SERVICE} \
119 ${MROOT}/etc/rc.d/rc${i/:k/}.d/K${RC_STOP}${RC_SERVICE}
120 ;;
121 *)
122 echo "error"
123 exit 1
124 ;;
125 esac
126 done
127 }
128
129 rc_service_del()
130 {
131 RC_SERVICE=$1
132
133 echo "Deleting ${RC_SERVICE} from all runlevels:"
134 for i in boot shutdown sysinit
135 do
136 for z in 00 01 02 03 04 05 06 07 08 09 $(seq 10 99)
137 do
138 if [ -L "${MROOT}/etc/rc.d/rc${i}.d/S${z}${RC_SERVICE}" ]
139 then
140 echo -e "\t\t[rc${i}.d <- S${z}]"
141 rm ${MROOT}/etc/rc.d/rc${i}.d/S${z}${RC_SERVICE}
142 fi
143
144 if [ -L "${MROOT}/etc/rc.d/rc${i}.d/K${z}${RC_SERVICE}" ]
145 then
146 echo -e "\t\t[rc${i}.d <- K${z}]"
147 rm ${MROOT}/etc/rc.d/rc${i}.d/K${z}${RC_SERVICE}
148 fi
149 done
150 done
151 }
152
153 rc_service_show()
154 {
155 RC_SERVICE=$1
156
157 local ALL_RUNLEVELS
158
159 # read'em (single)
160 for i in $(seq 0 7)
161 do
162 level=${i}
163 [[ ${i} = 7 ]] && level=sysinit
164 [[ ${i} = 3 ]] && level=boot
165 [[ ${i} = 0 ]] && level=shutdown
166
167 for script in ${MROOT}/etc/rc.d/rc${level}.d/*
168 do
169 x="$(basename ${script})"
170 [[ ${x/???/} = ${RC_SERVICE} ]] &&
171 ALL_RUNLEVELS[${i}]=${x/${RC_SERVICE}/}
172 done
173 done
174
175 # show them (single)
176 echo -n "${RC_SERVICE}: "
177 for i in $(seq 0 7)
178 do
179 [[ ! -z ${ALL_RUNLEVELS[${i}]} ]] &&
180 echo -n "[${i}:${ALL_RUNLEVELS[${i}]}] "
181 done
182 echo
183 }
184
185 check_not_excluded()
186 {
187 local SCRIPT
188 SCRIPT=$1
189
190 for i in ${RC_EXCLUDE}
191 do
192 [[ ${SCRIPT} = ${i} ]] && return 1
193 done
194
195 return 0
196 }
197
198
199 usage()
200 {
201 echo "Magellan RC Configurator v${VERSION} -- Niels Rogalla (niro@magellan-linux.de)"
202 echo -e "\nUsage: $(basename $0) [Option] [File] ..."
203 echo -e " add adds script to runlevel"
204 echo -e " del deletes script from runlevel"
205 echo -e " show shows current runlevel settings"
206 echo -e "\n"
207 }
208
209 case $1 in
210 add)
211 rc_service_add $2
212 ;;
213 del)
214 rc_service_del $2
215 ;;
216 show)
217 # show all
218 if [[ -z $2 ]]
219 then
220 echo "Currently configured Services:"
221 for i in ${RC_INIT_BASE}/*
222 do
223 x=$(basename ${i})
224 if check_not_excluded ${x}
225 then
226 rc_service_show ${x}
227 fi
228 done
229 else
230 echo "Currently configured Services:"
231 rc_service_show $2
232 fi
233 ;;
234 *)
235 usage
236 ;;
237 esac