Sophie

Sophie

distrib > Mageia > 8 > x86_64 > by-pkgid > 381785ef4c01f103804947e08a58df6e > files > 11

chkconfig-1.14-1.mga8.src.rpm

From 8f38891b604f4b55cfab5bacca2abfbc01f8b740 Mon Sep 17 00:00:00 2001
From: Olivier Blin <blino@mandriva.org>
Date: Wed, 24 Jun 2015 09:59:50 +0100
Subject: [PATCH 907/907] chkconfig: Fix priority when adding a LSB service
 required by another LSB service (mdv#22019)

---
 chkconfig.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/chkconfig.c b/chkconfig.c
index c3e9919..5015a69 100644
--- a/chkconfig.c
+++ b/chkconfig.c
@@ -244,7 +244,8 @@ static int frobOneDependencies(struct service *s, struct service *servs, int num
         }
     }
 
-    if (target || ((s0 != s->sPriority) || (k0 != s->kPriority))) {
+    int resolved = (s0 != s->sPriority) || (k0 != s->kPriority);
+    if (target || resolved) {
         for (i = 0; i < 7; i++) {
             int priority;
             char type;
@@ -261,7 +262,7 @@ static int frobOneDependencies(struct service *s, struct service *servs, int num
                 doSetService(*s, i, ((1 << i) & s->levels));
             }
         }
-        return 1; /* Resolved something */
+        return resolved; /* Resolved something */
     }
     return 0; /* Didn't resolve anything */
 }
@@ -273,6 +274,7 @@ static int frobDependencies(struct service *s) {
     struct service *servs = NULL;
     int numservs = 0;
     int nResolved = 0;
+    int target = -1;
     int i;
 
     numservs = readServices(&servs);
@@ -290,9 +292,11 @@ static int frobDependencies(struct service *s) {
         nResolved = 0;
 
         for (i = 0; i < numservs; i++) {
+            if (!strcmp((servs + i)->name, s->name))
+                target = i;
             if ((servs + i)->isLSB)
                 nResolved +=
-                    frobOneDependencies(servs + i, servs, numservs, 0, 0);
+                    frobOneDependencies(servs + i, servs, numservs, target == i, 0);
         }
     } while (nResolved);
 
-- 
2.3.2