summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-06-30 18:07:16 +0200
committerAnatol Belski <ab@php.net>2015-07-02 14:23:00 +0200
commitaec332e6b4ecbc529def9256342ee4e57ca440f3 (patch)
tree36872205de00d74c2b8c44797c77972241541e80 /ext
parentd6130fada6f13933dbf11b50d5cc6c50763d23c3 (diff)
downloadphp-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.c26
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;
}