diff options
author | Kavon Farvardin <kavon@farvard.in> | 2018-09-23 15:29:37 -0500 |
---|---|---|
committer | Kavon Farvardin <kavon@farvard.in> | 2018-09-23 15:29:37 -0500 |
commit | 84c2ad99582391005b5e873198b15e9e9eb4f78d (patch) | |
tree | caa8c2f2ec7e97fbb4977263c6817c9af5025cf4 /driver/utils/cwrapper.c | |
parent | 8ddb47cfcf5776e9a3c55fd37947c8a95e00fa12 (diff) | |
parent | e68b439fe5de61b9a2ca51af472185c62ccb8b46 (diff) | |
download | haskell-wip/T13904.tar.gz |
update to current master againwip/T13904
Diffstat (limited to 'driver/utils/cwrapper.c')
-rw-r--r-- | driver/utils/cwrapper.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/driver/utils/cwrapper.c b/driver/utils/cwrapper.c index 5a30274ba7..522c2b329a 100644 --- a/driver/utils/cwrapper.c +++ b/driver/utils/cwrapper.c @@ -70,9 +70,12 @@ char *flattenAndQuoteArgs(char *ptr, int argc, char *argv[]) return ptr; } +/* This function takes a callback to be called after the creation of the child + process but before we block waiting for the child. Can be NULL. */ __attribute__((noreturn)) int run (char *exePath, int numArgs1, char **args1, - int numArgs2, char **args2) + int numArgs2, char **args2, + runCallback callback) { int i, cmdline_len; char *new_cmdline, *ptr; @@ -134,6 +137,10 @@ __attribute__((noreturn)) int run (char *exePath, /* Synchronize input and wait for target to be ready. */ WaitForInputIdle(pi.hProcess, INFINITE); + /* If we have a registered callback then call it before we block. */ + if (callback) + callback(); + switch (WaitForSingleObject(pi.hProcess, INFINITE) ) { case WAIT_OBJECT_0: { |