Преглед на файлове

tests/loader.c: only evaluate STARPU_CHECK_LAUNCHER_ARGS if needed and abort when pattern is unknown

Nathalie Furmento преди 12 години
родител
ревизия
8b54cb91ef
променени са 1 файла, в които са добавени 9 реда и са изтрити 4 реда
  1. 9 4
      tests/loader.c

+ 9 - 4
tests/loader.c

@@ -121,10 +121,15 @@ static void test_cleaner(int sig)
 	exit(EXIT_FAILURE);
 }
 
-static void decode(char **src, char *motif, char *value)
+static void decode(char **src, char *motif, const char *value)
 {
      if (*src) {
 	  char *y = strstr(*src, motif);
+	  if (y && value == NULL)
+	  {
+	       fprintf(stderr, "error: $%s undefined\n", motif);
+	       exit(EXIT_FAILURE);
+	  }
 	  while (y) {
 	       char *neo = malloc((strlen(*src)-strlen(motif)+strlen(value)) * sizeof(char));
 	       char *to = neo;
@@ -147,7 +152,6 @@ int main(int argc, char *argv[])
 	int   status;
 	char *launcher;
 	char *launcher_args;
-	char *top_srcdir;
 	struct sigaction sa;
 	int   ret;
 	struct timeval start;
@@ -184,8 +188,6 @@ int main(int argc, char *argv[])
 	/* get launcher program */
 	launcher=getenv("STARPU_CHECK_LAUNCHER");
 	launcher_args=getenv("STARPU_CHECK_LAUNCHER_ARGS");
-	top_srcdir = getenv("top_srcdir");
-	decode(&launcher_args, "@top_srcdir@", top_srcdir);
 
 	/* get user-defined iter_max value */
 	if (getenv("STARPU_TIMEOUT_ENV"))
@@ -216,6 +218,7 @@ int main(int argc, char *argv[])
 			 * after the Libtool-generated wrapper scripts, hence
 			 * this special-case.  */
 			const char *top_builddir = getenv ("top_builddir");
+			const char *top_srcdir = getenv("top_srcdir");
 			if (top_builddir != NULL)
 			{
 				char *argv[100];
@@ -225,6 +228,8 @@ int main(int argc, char *argv[])
 				strcpy(libtool, top_builddir);
 				strcat(libtool, "/libtool");
 
+				decode(&launcher_args, "@top_srcdir@", top_srcdir);
+
 				argv[0] = libtool;
 				argv[1] = "--mode=execute";
 				argv[2] = launcher;