summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/kwsys/testProcess.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/Source/kwsys/testProcess.c b/Source/kwsys/testProcess.c
index 9f58e66..96db251 100644
--- a/Source/kwsys/testProcess.c
+++ b/Source/kwsys/testProcess.c
@@ -330,18 +330,14 @@ int main(int argc, const char* argv[])
{
n = atoi(argv[1]);
}
- else if(argc == 3)
+ else if(argc == 3 && strcmp(argv[1], "run") == 0)
{
n = atoi(argv[2]);
}
/* Check arguments. */
- if(n < 1 || n > 7 || (argc == 3 && strcmp(argv[1], "run") != 0))
- {
- fprintf(stdout, "Usage: %s <test number>\n", argv[0]);
- return 1;
- }
- if(argc == 3)
+ if(n >= 1 && n <= 7 && argc == 3)
{
+ /* This is the child process for a requested test number. */
switch (n)
{
case 1: return test1(argc, argv);
@@ -355,9 +351,9 @@ int main(int argc, const char* argv[])
fprintf(stderr, "Invalid test number %d.\n", n);
return 1;
}
-
- if(n >= 0 && n <= 7)
+ else if(n >= 1 && n <= 7)
{
+ /* This is the parent process for a requested test number. */
int states[7] =
{
kwsysProcess_State_Exited,
@@ -427,9 +423,22 @@ int main(int argc, const char* argv[])
#endif
return r;
}
+ else if(argc > 2 && strcmp(argv[1], "0") == 0)
+ {
+ /* This is the special debugging test to run a given command
+ line. */
+ const char** cmd = argv+2;
+ int state = kwsysProcess_State_Exited;
+ int exception = kwsysProcess_Exception_None;
+ int value = 0;
+ double timeout = 0;
+ int r = runChild(cmd, state, exception, value, 0, 1, 0, timeout, 0, 1);
+ return r;
+ }
else
{
- fprintf(stderr, "Test number out of range\n");
+ /* Improper usage. */
+ fprintf(stdout, "Usage: %s <test number>\n", argv[0]);
return 1;
- }
+ }
}