diff vendor/symfony/console/Output/StreamOutput.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 4c8ae668cc8c
children c2387f117808
line wrap: on
line diff
--- a/vendor/symfony/console/Output/StreamOutput.php	Mon Apr 23 09:33:26 2018 +0100
+++ b/vendor/symfony/console/Output/StreamOutput.php	Mon Apr 23 09:46:53 2018 +0100
@@ -33,8 +33,6 @@
     private $stream;
 
     /**
-     * Constructor.
-     *
      * @param resource                      $stream    A stream resource
      * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface)
      * @param bool|null                     $decorated Whether to decorate messages (null for auto-guessing)
@@ -85,16 +83,26 @@
      *
      * Colorization is disabled if not supported by the stream:
      *
-     *  -  Windows != 10.0.10586 without Ansicon, ConEmu or Mintty
+     *  -  the stream is redirected (eg php file.php >log)
+     *  -  Windows without VT100 support, Ansicon, ConEmu, Mintty
      *  -  non tty consoles
      *
      * @return bool true if the stream supports colorization, false otherwise
      */
     protected function hasColorSupport()
     {
+        if (function_exists('stream_isatty') && !@stream_isatty($this->stream)) {
+            return false;
+        }
         if (DIRECTORY_SEPARATOR === '\\') {
+            if (function_exists('sapi_windows_vt100_support')) {
+                $vt100Enabled = @sapi_windows_vt100_support($this->stream);
+            } else {
+                $vt100Enabled = '10.0.10586' === PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD;
+            }
+
             return
-                '10.0.10586' === PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD
+                $vt100Enabled
                 || false !== getenv('ANSICON')
                 || 'ON' === getenv('ConEmuANSI')
                 || 'xterm' === getenv('TERM');