Sophie

Sophie

distrib > Mageia > 3 > i586 > media > core-release-src > by-pkgid > 8799d2e5f5280ed416fc0d949767ae0c > files > 6

chkconfig-1.3.60-1.mga3.src.rpm

Subject: [PATCH] 
From: Andrey Borzenkov <arvidjaar@gmail.com>



Signed-off-by: Andrey Borzenkov <arvidjaar@gmail.com>

---

 chkconfig.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/chkconfig.c b/chkconfig.c
index 93cf760..26a7150 100644
--- a/chkconfig.c
+++ b/chkconfig.c
@@ -232,7 +232,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++) {
 			if (isConfigured(s->name, i, NULL, NULL)) {
 				int on = isOn(s->name, i);
@@ -243,7 +244,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 */
 }
@@ -255,6 +255,7 @@
 	struct service *servs = NULL;
 	int numservs = 0;
 	int nResolved = 0;
+	int target = -1;
 	int i;
 
 	numservs = readServices(&servs);
@@ -270,8 +271,10 @@
 	  	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);
+				nResolved += frobOneDependencies(servs+i, servs, numservs, target == i, 0);
 		}
 	} while (nResolved);