1
0
Просмотр исходного кода

fix depmaker bug, we need to skip the dependency but do not break out of the function, problem reported by Oliver

Waldemar Brodkorb 10 лет назад
Родитель
Сommit
dd3a1b26a4
1 измененных файлов с 15 добавлено и 11 удалено
  1. 15 11
      adk/tools/depmaker.c

+ 15 - 11
adk/tools/depmaker.c

@@ -70,7 +70,7 @@ static char *parse_line(char *package, char *pkgvar, char *string, int checksym,
 
 	char *key, *value, *dep, *key_sym, *pkgdeps, *depvar;
 	char temp[MAXLINE];
-	int i;
+	int i, skip;
 
 	string[strlen(string)-1] = '\0';
 	if ((key = strtok(string, ":=")) == NULL) {
@@ -120,6 +120,7 @@ static char *parse_line(char *package, char *pkgvar, char *string, int checksym,
 		exit(EXIT_FAILURE);
 	}
 
+	skip=0;
 	value = strtok(NULL, "=\t");
 	dep = strtok(value, " ");
 	while (dep != NULL) {
@@ -162,24 +163,27 @@ static char *parse_line(char *package, char *pkgvar, char *string, int checksym,
 				if (snprintf(key_sym, MAXLINE, "ADK_HOST_BUILD_%s", depvar) < 0)
 						perror("Can not create string variable.");
 
-				if (check_symbol(key_sym) != 0) {
-					free(key_sym);
-					free(depvar);
-					break;
-				}
+				if (check_symbol(key_sym) != 0)
+					skip=1;
+
 				free(key_sym);
 				free(depvar);
 			}
 		}
 		if (*prefixp == 0) {
 			*prefixp = 1;
-			if (snprintf(temp, MAXLINE, "%s-compile: %s-compile", package, dep) < 0)
-				perror("Can not create string variable.");
+			if (skip == 0) {
+				if (snprintf(temp, MAXLINE, "%s-compile: %s-compile", package, dep) < 0)
+					perror("Can not create string variable.");
+				strncat(pkgdeps, temp, strlen(temp));
+			}
 		} else {
-			if (snprintf(temp, MAXLINE, " %s-compile", dep) < 0)
-				perror("Can not create string variable.");
+			if (skip == 0) {
+				if (snprintf(temp, MAXLINE, " %s-compile", dep) < 0)
+						perror("Can not create string variable.");
+				strncat(pkgdeps, temp, strlen(temp));
+			}
 		}
-		strncat(pkgdeps, temp, strlen(temp));
 		dep = strtok(NULL, " ");
 	}
 	return(pkgdeps);