ENH: Start working on Working Directory support
This commit is contained in:
parent
179abe7ffe
commit
125b795637
@ -31,6 +31,7 @@
|
|||||||
#define kwsysProcess_Delete kwsys(Process_Delete)
|
#define kwsysProcess_Delete kwsys(Process_Delete)
|
||||||
#define kwsysProcess_SetCommand kwsys(Process_SetCommand)
|
#define kwsysProcess_SetCommand kwsys(Process_SetCommand)
|
||||||
#define kwsysProcess_SetTimeout kwsys(Process_SetTimeout)
|
#define kwsysProcess_SetTimeout kwsys(Process_SetTimeout)
|
||||||
|
#define kwsysProcess_SetWorkingDirectory kwsys(Process_SetWorkingDirectory)
|
||||||
#define kwsysProcess_State_Starting kwsys(Process_State_Starting)
|
#define kwsysProcess_State_Starting kwsys(Process_State_Starting)
|
||||||
#define kwsysProcess_State_Error kwsys(Process_State_Error)
|
#define kwsysProcess_State_Error kwsys(Process_State_Error)
|
||||||
#define kwsysProcess_State_Exception kwsys(Process_State_Exception)
|
#define kwsysProcess_State_Exception kwsys(Process_State_Exception)
|
||||||
@ -97,6 +98,12 @@ kwsysEXPORT void kwsysProcess_SetCommand(kwsysProcess* cp,
|
|||||||
*/
|
*/
|
||||||
kwsysEXPORT void kwsysProcess_SetTimeout(kwsysProcess* cp, double timeout);
|
kwsysEXPORT void kwsysProcess_SetTimeout(kwsysProcess* cp, double timeout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the working directory for the child process. The working directory can
|
||||||
|
* be absolute or relative to the current directory.
|
||||||
|
*/
|
||||||
|
kwsysEXPORT void kwsysProcess_SetWorkingDirectory(kwsysProcess* cp, const char* dir);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the current state of the Process instance. Possible states are:
|
* Get the current state of the Process instance. Possible states are:
|
||||||
*
|
*
|
||||||
@ -254,6 +261,7 @@ kwsysEXPORT void kwsysProcess_Kill(kwsysProcess* cp);
|
|||||||
# undef kwsysProcess_Delete
|
# undef kwsysProcess_Delete
|
||||||
# undef kwsysProcess_SetCommand
|
# undef kwsysProcess_SetCommand
|
||||||
# undef kwsysProcess_SetTimeout
|
# undef kwsysProcess_SetTimeout
|
||||||
|
# undef kwsysProcess_SetWorkingDirectory
|
||||||
# undef kwsysProcess_State_Starting
|
# undef kwsysProcess_State_Starting
|
||||||
# undef kwsysProcess_State_Error
|
# undef kwsysProcess_State_Error
|
||||||
# undef kwsysProcess_State_Exception
|
# undef kwsysProcess_State_Exception
|
||||||
|
@ -100,6 +100,9 @@ struct kwsysProcess_s
|
|||||||
/* The timeout length. */
|
/* The timeout length. */
|
||||||
double Timeout;
|
double Timeout;
|
||||||
|
|
||||||
|
/* The working directory for the process. */
|
||||||
|
char* WorkingDirectory;
|
||||||
|
|
||||||
/* Time at which the child started. Negative for no timeout. */
|
/* Time at which the child started. Negative for no timeout. */
|
||||||
kwsysProcessTime StartTime;
|
kwsysProcessTime StartTime;
|
||||||
|
|
||||||
@ -206,6 +209,29 @@ void kwsysProcess_SetTimeout(kwsysProcess* cp, double timeout)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------*/
|
||||||
|
void kwsysProcess_SetWorkingDirectory(kwsysProcess* cp, const char* dir)
|
||||||
|
{
|
||||||
|
if(cp->WorkingDirectory == dir)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(cp->WorkingDirectory && dir && strcmp(cp->WorkingDirectory, dir) == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(cp->WorkingDirectory)
|
||||||
|
{
|
||||||
|
free(cp->WorkingDirectory);
|
||||||
|
cp->WorkingDirectory = 0;
|
||||||
|
}
|
||||||
|
if(dir)
|
||||||
|
{
|
||||||
|
cp->WorkingDirectory = (char*) malloc(strlen(dir) + 1);
|
||||||
|
strcpy(cp->WorkingDirectory, dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
int kwsysProcess_GetState(kwsysProcess* cp)
|
int kwsysProcess_GetState(kwsysProcess* cp)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user