Browse Source

loader: Factorize creating the parameter list, which allows to pass over argv easily actually

Samuel Thibault 5 years ago
parent
commit
c0e1b2768c
1 changed files with 29 additions and 36 deletions
  1. 29 36
      tests/loader.c

+ 29 - 36
tests/loader.c

@@ -257,9 +257,13 @@ int main(int argc, char *argv[])
 	{
 	{
 		test_name = malloc(strlen(argv[x+1]) + 1 + strlen(argv[x+2]) + 1);
 		test_name = malloc(strlen(argv[x+1]) + 1 + strlen(argv[x+2]) + 1);
 		sprintf(test_name, "%s/%s", argv[x+1], argv[x+2]);
 		sprintf(test_name, "%s/%s", argv[x+1], argv[x+2]);
+		x += 3;
 	}
 	}
 	else
 	else
+	{
 		test_name = argv[x];
 		test_name = argv[x];
+		x += 1;
+	}
 
 
 	if (!test_name)
 	if (!test_name)
 	{
 	{
@@ -352,50 +356,39 @@ int main(int argc, char *argv[])
 	child_pid = fork();
 	child_pid = fork();
 	if (child_pid == 0)
 	if (child_pid == 0)
 	{
 	{
-		if (launcher)
+		char *launcher_argv[100];
+		int i=0;
+
+		/* "Launchers" such as Valgrind need to be inserted
+		 * after the Libtool-generated wrapper scripts, hence
+		 * this special-case.  */
+		if (launcher && top_builddir != NULL)
 		{
 		{
-			/* "Launchers" such as Valgrind need to be inserted
-			 * after the Libtool-generated wrapper scripts, hence
-			 * this special-case.  */
-			if (top_builddir != NULL)
+			launcher_argv[i++] = libtool;
+			launcher_argv[i++] = "--mode=execute";
+			launcher_argv[i++] = launcher;
+			if (launcher_args)
 			{
 			{
-				char *launcher_argv[100];
-				int i=0;
-
-				launcher_argv[i++] = libtool;
-				launcher_argv[i++] = "--mode=execute";
-				launcher_argv[i++] = launcher;
-				if (launcher_args)
+				launcher_argv[i++] = strtok(launcher_args, " ");
+				while (launcher_argv[i-1])
 				{
 				{
-					launcher_argv[i++] = strtok(launcher_args, " ");
-					while (launcher_argv[i-1])
-					{
-						launcher_argv[i++] = strtok(NULL, " ");
-					}
+					launcher_argv[i++] = strtok(NULL, " ");
 				}
 				}
-				launcher_argv[i++] = test_name;
-#ifdef STARPU_SIMGRID
-				launcher_argv[i++] = "--cfg=contexts/factory:thread";
-#endif
-				launcher_argv[i++] = test_args;
-				launcher_argv[i++] = NULL;
-				execvp(*launcher_argv, launcher_argv);
-			}
-			else
-			{
-				execl(test_name, test_name,
-#ifdef STARPU_SIMGRID
-					"--cfg=contexts/factory:thread",
-#endif
-					test_args, NULL);
 			}
 			}
 		}
 		}
-		else
-			execl(test_name, test_name,
+
+		launcher_argv[i++] = test_name;
 #ifdef STARPU_SIMGRID
 #ifdef STARPU_SIMGRID
-				"--cfg=contexts/factory:thread",
+		launcher_argv[i++] = "--cfg=contexts/factory:thread";
 #endif
 #endif
-				test_args, NULL);
+		if (test_args)
+			launcher_argv[i++] = test_args;
+		else while (argv[x])
+		{
+			launcher_argv[i++] = argv[x++];
+		}
+		launcher_argv[i++] = NULL;
+		execvp(*launcher_argv, launcher_argv);
 
 
 		fprintf(stderr, "[error] '%s' failed to exec. test marked as failed\n", test_name);
 		fprintf(stderr, "[error] '%s' failed to exec. test marked as failed\n", test_name);
 		exit(EXIT_FAILURE);
 		exit(EXIT_FAILURE);