ENH: Start working on Working Directory support

This commit is contained in:
Andy Cedilnik 2003-07-07 08:36:40 -04:00
parent 179abe7ffe
commit 125b795637
2 changed files with 34 additions and 0 deletions

View File

@ -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

View File

@ -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)
{ {