chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a042efa
)
service: always sort services from suse B runlevel before services from normal runlevels
author
Lennart Poettering
<lennart@poettering.net>
Thu, 5 Aug 2010 17:46:31 +0000
(19:46 +0200)
committer
Lennart Poettering
<lennart@poettering.net>
Thu, 5 Aug 2010 17:50:03 +0000
(19:50 +0200)
src/service.c
patch
|
blob
|
history
diff --git
a/src/service.c
b/src/service.c
index 7fb3db3410013ea529d0e6897c1ddaf51d037489..b2e0f86ae8d6ac83b8f9e3fd6b2875b34b51964d 100644
(file)
--- a/
src/service.c
+++ b/
src/service.c
@@
-292,6
+292,7
@@
static int sysv_fix_order(Service *s) {
LIST_FOREACH(units_per_type, other, s->meta.manager->units_per_type[UNIT_SERVICE]) {
Service *t;
UnitDependency d;
LIST_FOREACH(units_per_type, other, s->meta.manager->units_per_type[UNIT_SERVICE]) {
Service *t;
UnitDependency d;
+ bool special_s, special_t;
t = (Service*) other;
t = (Service*) other;
@@
-307,7
+308,14
@@
static int sysv_fix_order(Service *s) {
(!t->sysv_path || t->sysv_has_lsb))
continue;
(!t->sysv_path || t->sysv_has_lsb))
continue;
- if (t->sysv_start_priority < s->sysv_start_priority)
+ special_s = s->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, s->sysv_runlevels);
+ special_t = t->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, t->sysv_runlevels);
+
+ if (special_t && !special_s)
+ d = UNIT_AFTER;
+ else if (special_s && !special_t)
+ d = UNIT_BEFORE;
+ else if (t->sysv_start_priority < s->sysv_start_priority)
d = UNIT_AFTER;
else if (t->sysv_start_priority > s->sysv_start_priority)
d = UNIT_BEFORE;
d = UNIT_AFTER;
else if (t->sysv_start_priority > s->sysv_start_priority)
d = UNIT_BEFORE;