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

View File

@ -497,7 +497,7 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
kwsysProcessTime userStartTime; kwsysProcessTime userStartTime;
int user = 0; int user = 0;
int expired = 0; int expired = 0;
int pipeId = 0; int pipeId = kwsysProcess_Pipe_None;
int numReady = 0; int numReady = 0;
/* Record the time at which user timeout period starts. */ /* 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. */ /* Report this data. */
*data = cp->PipeBuffer; *data = cp->PipeBuffer;
*length = n; *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; break;
} }
} }
@ -663,13 +669,13 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
cp->Killed = 0; cp->Killed = 0;
cp->TimeoutExpired = 1; cp->TimeoutExpired = 1;
cp->PipesLeft = 0; cp->PipesLeft = 0;
return 0; return kwsysProcess_Pipe_None;
} }
} }
else else
{ {
/* No pipes are left open. */ /* 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 user;
int done = 0; int done = 0;
int expired = 0; int expired = 0;
int pipeId = 0; int pipeId = kwsysProcess_Pipe_None;
DWORD w; DWORD w;
/* Make sure we are executing a process. */ /* Make sure we are executing a process. */
if(cp->State != kwsysProcess_State_Executing || cp->Killed || if(cp->State != kwsysProcess_State_Executing || cp->Killed ||
cp->TimeoutExpired) cp->TimeoutExpired)
{ {
return 0; return kwsysProcess_Pipe_None;
} }
/* Record the time at which user timeout period starts. */ /* 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. */ /* Report this data. */
*data = cp->Pipe[cp->CurrentIndex].DataBuffer; *data = cp->Pipe[cp->CurrentIndex].DataBuffer;
*length = cp->Pipe[cp->CurrentIndex].DataLength; *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; done = 1;
} }
} }
@ -1047,13 +1053,13 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length,
kwsysProcess_Kill(cp); kwsysProcess_Kill(cp);
cp->TimeoutExpired = 1; cp->TimeoutExpired = 1;
cp->Killed = 0; cp->Killed = 0;
return 0; return kwsysProcess_Pipe_None;
} }
} }
else else
{ {
/* The children have terminated and no more data are available. */ /* The children have terminated and no more data are available. */
return 0; return kwsysProcess_Pipe_None;
} }
} }