3
import sys, re, os, initdutils
8
print >> sys.stderr, 'Usage: %s /etc/init.d/<init-script>' % sys.argv[0]
12
startpri = stoppri = 20
13
defstart = [2, 3, 4, 5]
16
# Priorities of these facilities in Debian
18
"$local_fs" : {'lsb' : (0, 100)},
19
"$network" : {'lsb' : (10, 50)},
20
"$remote_fs" : {'lsb ': (19, 20)},
21
"$named" : {'lsb': (19, 19)},
22
"$syslog" : {'lsb' : (10, 89)},
23
"$netdaemons" : {'lsb': (80, 19)},
26
facilities = initdutils.load_facilities()
27
facilities.update(os_facilities)
29
headers = initdutils.scan_initfile(initfile)
31
reqstart = headers.get('Required-Start', [])
34
for facility in reqstart:
35
if not facilities.has_key(facility):
36
print >> sys.stderr, 'Missing expected start facility', facility
38
for script, pri in facilities[facility].items():
39
if script != initfile:
41
startpri = max(startpri, start+1)
42
startpri = min(max(startpri, 1), 99)
44
reqstop = headers.get('Required-Stop', [])
47
for facility in reqstop:
48
if not facilities.has_key(facility):
49
print >> sys.stderr, 'Missing expected stop facility', facility
51
for script, pri in facilities[facility].items():
52
if script != initfile:
54
stoppri = min(stoppri, stop-1)
55
stoppri = min(max(stoppri, 1), 99)
57
provides = headers.get('Provides', [])
59
for facility in provides:
60
if facility[0] == '$':
61
print >> sys.stderr, 'Ignoring system-provided facility', facility
63
if not facilities.has_key(facility):
64
facilities[facility] = {}
66
facilities[facility][initfile] = (startpri, stoppri)
67
initdutils.save_facilities(facilities)
69
defstart = headers.get('Default-Start', defstart)
70
defstop = headers.get('Default-Stop', defstop)
72
# A set type would be nice... [range(2,6) = 2..5]
73
for level in range(2,6):
86
start_runlevels = " ".join(map(str, defstart))
87
stop_runlevels = " ".join(map(str, defstop))
89
initfile = initfile.replace('/etc/init.d/', '')
91
os.system("/usr/sbin/update-rc.d %(initfile)s start %(startpri)d %(start_runlevels)s . stop %(stoppri)d %(stop_runlevels)s ." % locals())