summaryrefslogtreecommitdiff
path: root/remove_initd
diff options
context:
space:
mode:
authorChris Lawrence <lawrencc@debian.org>2005-01-30 08:01:29 -0600
committerDidier Raboud <odyx@debian.org>2005-01-30 08:01:29 -0600
commit80000249edae50a4c7fcd670cb035fa3f9a82fc3 (patch)
tree2e4e549e50b90526fd95875403f5e6957b08c6b4 /remove_initd
parent899197d7a7a690a5c94ae7c2a96c02f8234b0f61 (diff)
lsb 2.0-5 Debian release.
Diffstat (limited to 'remove_initd')
-rwxr-xr-xremove_initd23
1 files changed, 22 insertions, 1 deletions
diff --git a/remove_initd b/remove_initd
index c7dc827..0322c7f 100755
--- a/remove_initd
+++ b/remove_initd
@@ -4,6 +4,13 @@ import sys, re, os, initdutils
if len(sys.argv) > 1:
initfile = sys.argv[1]
+ # If the absolute path isn't specified, assume it's relative to
+ # cwd; if that doesn't exist, try /etc/init.d
+ ap = os.path.abspath(initfile)
+ if os.path.exists(ap):
+ initfile = ap
+ else:
+ initfile = os.path.join('/etc/init.d', initfile)
else:
print >> sys.stderr, 'Usage: %s /etc/init.d/<init-script>' % sys.argv[0]
sys.exit(1)
@@ -13,15 +20,29 @@ headers = initdutils.scan_initfile(initfile)
provides = headers.get('Provides')
if provides:
facilities = initdutils.load_facilities()
+ depends = initdutils.load_depends()
for facility in provides:
- if facilities.has_key(facility):
+ if facility in facilities:
entries = {}
for entry in facilities[facility].items():
if entry[0] != initfile:
entries[entry[0]] = entry[1]
facilities[facility] = entries
+ for (initscript, needed) in depends.iteritems():
+ for facility in needed:
+ if facility[0] == "$":
+ continue
+ if not facilities.get(facility) and facility in provides:
+ print >> sys.stderr, 'Unable to remove %s: %s needs %s\n' % (
+ initfile, initscript, facility)
+ sys.exit(1)
+
+ if initfile in depends:
+ del depends[initfile]
+ initdutils.save_depends(depends)
+
initdutils.save_facilities(facilities)
initfile = initfile.replace('/etc/init.d/', '')