diff options
author | Anatol Belski <ab@php.net> | 2015-06-30 18:07:16 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-07-02 14:23:00 +0200 |
commit | aec332e6b4ecbc529def9256342ee4e57ca440f3 (patch) | |
tree | 36872205de00d74c2b8c44797c77972241541e80 /ext | |
parent | d6130fada6f13933dbf11b50d5cc6c50763d23c3 (diff) | |
download | php-git-aec332e6b4ecbc529def9256342ee4e57ca440f3.tar.gz |
select the case to set the pipe blocking option more precisely
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; } |