]> granicus.if.org Git - php/commitdiff
- #41874, separate STDOUT and STDERR in exec functions
authorPierre Joye <pajoye@php.net>
Tue, 9 Jun 2009 14:05:44 +0000 (14:05 +0000)
committerPierre Joye <pajoye@php.net>
Tue, 9 Jun 2009 14:05:44 +0000 (14:05 +0000)
TSRM/tsrm_win32.c

index 33559a50e91e951c9f0a884e8bc464ea0d4605f5..ae18f39ec24bb6622747a286d9067c81c5a9d5a8 100644 (file)
@@ -27,6 +27,7 @@
 
 #define TSRM_INCLUDE_FULL_WINDOWS_HEADERS
 
+#include "SAPI.h"
 #include "TSRM.h"
 
 #ifdef TSRM_WIN32
@@ -251,6 +252,7 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
        PROCESS_INFORMATION process;
        SECURITY_ATTRIBUTES security;
        HANDLE in, out;
+       DWORD dwCreateFlags = 0;
        char *cmd;
        process_pair *proc;
        TSRMLS_FETCH();
@@ -284,9 +286,14 @@ TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd,
                startup.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
        }
 
+       dwCreateFlags = NORMAL_PRIORITY_CLASS;
+       if (strcmp(sapi_module.name, "cli") != 0) {
+               dwCreateFlags |= CREATE_NO_WINDOW;
+       }
+
        cmd = (char*)malloc(strlen(command)+strlen(TWG(comspec))+sizeof(" /c ")+2);
        sprintf(cmd, "%s /c \"%s\"", TWG(comspec), command);
-       if (!CreateProcess(NULL, cmd, &security, &security, security.bInheritHandle, NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW, env, cwd, &startup, &process)) {
+       if (!CreateProcess(NULL, cmd, &security, &security, security.bInheritHandle, dwCreateFlags, env, cwd, &startup, &process)) {
                return NULL;
        }
        free(cmd);