ENH: Cleaned up pipe numbering.

This commit is contained in:
Brad King 2003-12-07 14:09:58 -05:00
parent 21c5c6c81d
commit b777b8656e
3 changed files with 28 additions and 13 deletions

View File

@ -60,6 +60,7 @@
#define kwsysProcess_Execute kwsys(Process_Execute)
#define kwsysProcess_WaitForData kwsys(Process_WaitForData)
#define kwsysProcess_Pipes_e kwsys(Process_Pipes_e)
#define kwsysProcess_Pipe_None kwsys(Process_Pipe_None)
#define kwsysProcess_Pipe_STDOUT kwsys(Process_Pipe_STDOUT)
#define kwsysProcess_Pipe_STDERR kwsys(Process_Pipe_STDERR)
#define kwsysProcess_Pipe_Timeout kwsys(Process_Pipe_Timeout)
@ -228,8 +229,8 @@ kwsysEXPORT void kwsysProcess_Execute(kwsysProcess* cp);
*
* Return value will be one of:
*
* 0 = No more data will be available from the child process,
* or no process has been executed. WaitForExit should
* Pipe_None = No more data will be available from the child process,
* ( == 0) or no process has been executed. WaitForExit should
* be called to wait for the process to terminate.
* Pipe_STDOUT = Data have been read from the child's stdout pipe.
* Pipe_STDERR = Data have been read from the child's stderr pipe.
@ -241,8 +242,9 @@ kwsysEXPORT int kwsysProcess_WaitForData(kwsysProcess* cp, char** data,
int* length, double* timeout);
enum kwsysProcess_Pipes_e
{
kwsysProcess_Pipe_STDOUT=1,
kwsysProcess_Pipe_STDERR=2,
kwsysProcess_Pipe_None,
kwsysProcess_Pipe_STDOUT,
kwsysProcess_Pipe_STDERR,
kwsysProcess_Pipe_Timeout=255
};
@ -317,6 +319,7 @@ kwsysEXPORT void kwsysProcess_Kill(kwsysProcess* cp);
# undef kwsysProcess_Execute
# undef kwsysProcess_WaitForData
# undef kwsysProcess_Pipes_e
# undef kwsysProcess_Pipe_None
# undef kwsysProcess_Pipe_STDOUT
# undef kwsysProcess_Pipe_STDERR
# undef kwsysProcess_Pipe_Timeout

View File

@ -497,7 +497,7 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
kwsysProcessTime userStartTime;
int user = 0;
int expired = 0;
int pipeId = 0;
int pipeId = kwsysProcess_Pipe_None;
int numReady = 0;
/* Record the time at which user timeout period starts. */
@ -542,7 +542,13 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
/* Report this data. */
*data = cp->PipeBuffer;
*length = n;
pipeId = (1 << i);
switch(i)
{
case KWSYSPE_PIPE_STDOUT:
pipeId = kwsysProcess_Pipe_STDOUT; break;
case KWSYSPE_PIPE_STDERR:
pipeId = kwsysProcess_Pipe_STDERR; break;
};
break;
}
}
@ -663,13 +669,13 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
cp->Killed = 0;
cp->TimeoutExpired = 1;
cp->PipesLeft = 0;
return 0;
return kwsysProcess_Pipe_None;
}
}
else
{
/* No pipes are left open. */
return 0;
return kwsysProcess_Pipe_None;
}
}

View File

@ -931,14 +931,14 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
int user;
int done = 0;
int expired = 0;
int pipeId = 0;
int pipeId = kwsysProcess_Pipe_None;
DWORD w;
/* Make sure we are executing a process. */
if(cp->State != kwsysProcess_State_Executing || cp->Killed ||
cp->TimeoutExpired)
{
return 0;
return kwsysProcess_Pipe_None;
}
/* Record the time at which user timeout period starts. */
@ -1002,7 +1002,13 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
/* Report this data. */
*data = cp->Pipe[cp->CurrentIndex].DataBuffer;
*length = cp->Pipe[cp->CurrentIndex].DataLength;
pipeId = (1 << cp->CurrentIndex);
switch(cp->CurrentIndex)
{
case KWSYSPE_PIPE_STDOUT:
pipeId = kwsysProcess_Pipe_STDOUT; break;
case KWSYSPE_PIPE_STDERR:
pipeId = kwsysProcess_Pipe_STDERR; break;
}
done = 1;
}
}
@ -1047,13 +1053,13 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
kwsysProcess_Kill(cp);
cp->TimeoutExpired = 1;
cp->Killed = 0;
return 0;
return kwsysProcess_Pipe_None;
}
}
else
{
/* The children have terminated and no more data are available. */
return 0;
return kwsysProcess_Pipe_None;
}
}