diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2003-07-07 12:36:40 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2003-07-07 12:36:40 (GMT) |
commit | 125b7956378ef65bfbd23751054decfa44169db9 (patch) | |
tree | bb52976a6a79afd86aa9c980295c1f360b3b2a8c /Source | |
parent | 179abe7ffeb125ef4bfa7c852dfad03544d66194 (diff) | |
download | CMake-125b7956378ef65bfbd23751054decfa44169db9.zip CMake-125b7956378ef65bfbd23751054decfa44169db9.tar.gz CMake-125b7956378ef65bfbd23751054decfa44169db9.tar.bz2 |
ENH: Start working on Working Directory support
Diffstat (limited to 'Source')
-rw-r--r-- | Source/kwsys/Process.h.in | 8 | ||||
-rw-r--r-- | Source/kwsys/ProcessUNIX.c | 26 |
2 files changed, 34 insertions, 0 deletions
diff --git a/Source/kwsys/Process.h.in b/Source/kwsys/Process.h.in index 2552c17..cc45299 100644 --- a/Source/kwsys/Process.h.in +++ b/Source/kwsys/Process.h.in @@ -31,6 +31,7 @@ #define kwsysProcess_Delete kwsys(Process_Delete) #define kwsysProcess_SetCommand kwsys(Process_SetCommand) #define kwsysProcess_SetTimeout kwsys(Process_SetTimeout) +#define kwsysProcess_SetWorkingDirectory kwsys(Process_SetWorkingDirectory) #define kwsysProcess_State_Starting kwsys(Process_State_Starting) #define kwsysProcess_State_Error kwsys(Process_State_Error) #define kwsysProcess_State_Exception kwsys(Process_State_Exception) @@ -98,6 +99,12 @@ kwsysEXPORT void kwsysProcess_SetCommand(kwsysProcess* cp, 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: * * kwsysProcess_State_Starting = Execute has not yet been called. @@ -254,6 +261,7 @@ kwsysEXPORT void kwsysProcess_Kill(kwsysProcess* cp); # undef kwsysProcess_Delete # undef kwsysProcess_SetCommand # undef kwsysProcess_SetTimeout +# undef kwsysProcess_SetWorkingDirectory # undef kwsysProcess_State_Starting # undef kwsysProcess_State_Error # undef kwsysProcess_State_Exception diff --git a/Source/kwsys/ProcessUNIX.c b/Source/kwsys/ProcessUNIX.c index fc315a9..96b8300 100644 --- a/Source/kwsys/ProcessUNIX.c +++ b/Source/kwsys/ProcessUNIX.c @@ -99,6 +99,9 @@ struct kwsysProcess_s /* The timeout length. */ double Timeout; + + /* The working directory for the process. */ + char* WorkingDirectory; /* Time at which the child started. Negative for no timeout. */ kwsysProcessTime StartTime; @@ -207,6 +210,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) { return cp->State; |