mirror of
https://github.com/troglobit/finit.git
synced 2026-10-23 11:44:37 +00:00
Store removal status separate from dirty
Having removal status stored in the dirty status resulted in removal status being forgotten when a service was marked as dirty, for instance when a dependency was updated. This side effect of marke_dirty seems a bit unexpected and instead of adding exceptions to the logic for when marking a service dirty - let's separate the two things (dirty and removed) from each other. Signed-off-by: Jacques de Laval <Jacques.De.Laval@westermo.com>
This commit is contained in:
1 parent
d00a53dfbf
commit
b3fad1077e
3 files changed
+13
-4
No files matched your search
@@ -458,7 +458,7 @@ void svc_mark_dynamic(void)
|
||||
if (svc->protect)
|
||||
continue;
|
||||
|
||||
*((int *)&svc->dirty) = -1;
|
||||
*((int *)&svc->removed) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -472,6 +472,11 @@ void svc_mark_clean(svc_t *svc)
|
||||
*((int *)&svc->dirty) = 0;
|
||||
}
|
||||
|
||||
void svc_enable(svc_t *svc)
|
||||
{
|
||||
*((int *)&svc->removed) = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* svc_clean_dynamic - Stop and cleanup stale services removed from /etc/finit.d
|
||||
* @cb: Callback to run for each stale service
|
||||
@@ -484,7 +489,7 @@ void svc_clean_dynamic(void (*cb)(svc_t *))
|
||||
svc_t *svc, *iter = NULL;
|
||||
|
||||
for (svc = svc_iterator(&iter, 1); svc; svc = svc_iterator(&iter, 0)) {
|
||||
if (svc->dirty == -1 && cb)
|
||||
if (svc->removed && cb)
|
||||
cb(svc);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user