diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/standard/php_fopen_wrapper.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index 89e4a81c35..89b8bed19d 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -180,6 +180,9 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa char *p, *token, *pathdup; zend_long max_memory; FILE *file = NULL; +#ifdef PHP_WIN32 + int pipe_requested = 0; +#endif if (!strncasecmp(path, "php://", 6)) { path += 6; @@ -257,6 +260,9 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa } else { fd = dup(STDIN_FILENO); } +#ifdef PHP_WIN32 + pipe_requested = 1; +#endif } else if (!strcasecmp(path, "stdout")) { if (!strcmp(sapi_module.name, "cli")) { static int cli_out = 0; @@ -270,6 +276,9 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa } else { fd = dup(STDOUT_FILENO); } +#ifdef PHP_WIN32 + pipe_requested = 1; +#endif } else if (!strcasecmp(path, "stderr")) { if (!strcmp(sapi_module.name, "cli")) { static int cli_err = 0; @@ -283,6 +292,9 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa } else { fd = dup(STDERR_FILENO); } +#ifdef PHP_WIN32 + pipe_requested = 1; +#endif } else if (!strncasecmp(path, "fd/", 3)) { const char *start; char *end; @@ -403,15 +415,13 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa } #ifdef PHP_WIN32 - { - if (stream && context) { - zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking"); - if (blocking_pipes) { - convert_to_long(blocking_pipes); - php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, Z_LVAL_P(blocking_pipes), NULL); - } - } + if (pipe_requested && stream && context) { + zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking"); + if (blocking_pipes) { + convert_to_long(blocking_pipes); + php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, Z_LVAL_P(blocking_pipes), NULL); } + } #endif return stream; } |