Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > c4201dcb4458e8d1d4c3554e8d9b1456 > files > 5

chkconfig-1.3.37-1mdv2009.0.src.rpm

--- chkconfig-1.3.30/chkconfig.c.targreq	2007-01-20 17:58:28.000000000 +0100
+++ chkconfig-1.3.30/chkconfig.c	2007-01-20 17:55:59.000000000 +0100
@@ -266,7 +266,8 @@
 		}
 	}
 
-	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)) {
 				int on = isOn(s->name, i);
@@ -277,7 +278,7 @@
 				doSetService(*s, i, ((1<<i) & s->levels));
 			}
 		}
-		return 1; /* Resolved something */
+		return resolved; /* Resolved something */
 	}
 	return 0; /* Didn't resolve anything */
 }
@@ -313,7 +314,6 @@
 			continue;
 		}
 		if (!S_ISREG(sb.st_mode)) continue;
-		if (!strcmp(ent->d_name, s->name)) continue;
 		servs = realloc(servs, (numservs+1) * sizeof(struct service));
 		if (!readServiceInfo(ent->d_name, servs + numservs, 0))
 			numservs++;
@@ -325,13 +325,12 @@
 		int i;
 		
 		for (i = 0; i < numservs ; i++) {
-			if ((servs+i)->isLSB)
-				nResolved += frobOneDependencies(servs+i, servs, numservs, 0);
+			if ((servs+i)->isLSB) {
+				int target = !strcmp((servs+i)->name, s->name);
+				nResolved += frobOneDependencies(servs+i, servs, numservs, target);
+			}
 		}
 	} while (nResolved);
-
-	/* Resolve our target */
-	frobOneDependencies(s, servs, numservs, 1);
 }
 
 static int addService(char * name) {