]> granicus.if.org Git - php/commitdiff
select the case to set the pipe blocking option more precisely
authorAnatol Belski <ab@php.net>
Tue, 30 Jun 2015 16:07:16 +0000 (18:07 +0200)
committerAnatol Belski <ab@php.net>
Thu, 2 Jul 2015 12:23:00 +0000 (14:23 +0200)
ext/standard/php_fopen_wrapper.c

index 89e4a81c3598cf245ab1eb5097242512b8c4503f..89b8bed19d7347232d99cb0e4d57f4fe6fda0cea 100644 (file)
@@ -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;
 }