summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorMichael Stapelberg <stapelberg@debian.org>2013-06-19 19:35:07 +0200
committerMichael Stapelberg <michael@stapelberg.de>2013-06-19 19:35:07 +0200
commitd8e9a6053f725052640df368ffc284d5268677ac (patch)
treecd3174f1e0a843ca0579bc29c38b32af3b0f0403 /script
parent161f08adc64afa64557f2e39cdfc8631dfa509a3 (diff)
downloadinit-system-helpers-d8e9a6053f725052640df368ffc284d5268677ac.tar.gz
deb-systemd-helper: always store .dsh-also state, not only when creating links
Diffstat (limited to 'script')
-rwxr-xr-xscript/deb-systemd-helper22
1 files changed, 18 insertions, 4 deletions
diff --git a/script/deb-systemd-helper b/script/deb-systemd-helper
index 186a7d8..2414c70 100755
--- a/script/deb-systemd-helper
+++ b/script/deb-systemd-helper
@@ -96,6 +96,22 @@ sub find_unit {
return $service_path;
}
+# Writes $service_link into $statefile unless it’s already in there.
+sub record_in_statefile {
+ my ($statefile, $service_link) = @_;
+
+ open(my $fh, '>>', $statefile) or error("unable to write to $statefile");
+ while (<$fh>) {
+ chomp;
+ if ($_ eq $service_link) {
+ close($fh);
+ return;
+ }
+ }
+ print $fh "$service_link\n";
+ close($fh);
+}
+
sub make_link {
my ($service_path, $service_link, $action, $orig_statename) = @_;
my $already_enabled = 1;
@@ -103,6 +119,8 @@ sub make_link {
if ($action eq 'is-enabled') {
$already_enabled = 0 if ! -l $service_link;
} else {
+ record_in_statefile("$state_dir/$orig_statename", $service_link);
+
my $statefile = $service_link;
$statefile =~ s,^/etc/systemd/system/,$state_dir/,;
if (-e $statefile) {
@@ -125,10 +143,6 @@ sub make_link {
make_path(dirname($statefile));
open(my $fh, '>>', $statefile);
close($fh);
-
- open($fh, '>>', "$state_dir/$orig_statename");
- print $fh "$service_link\n";
- close($fh);
}
return $already_enabled;