Req #72768 [Com]: Add ENABLE_VIRTUAL_TERMINAL_PROCESSING flag for php.exe

From: Date: Wed, 10 Aug 2016 11:34:57 +0000
Subject: Req #72768 [Com]: Add ENABLE_VIRTUAL_TERMINAL_PROCESSING flag for php.exe
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-203149@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=72768&edit=1

 ID:                 72768
 Comment by:         jhdxr@php.net
 Reported by:        mlocati at gmail dot com
 Summary:            Add ENABLE_VIRTUAL_TERMINAL_PROCESSING flag for
                     php.exe
 Status:             Assigned
 Type:               Feature/Change Request
 Package:            Output Control
 Operating System:   Windows 10
 PHP Version:        Irrelevant
 Assigned To:        ab
 Block user comment: N
 Private report:     N

 New Comment:

It's a good news that Windows finally supports this feature. If we add this flag to cli, I
think we'd better add a constant indicating if this feature is enabled or not so userland can
have their own choice.


Previous Comments:
------------------------------------------------------------------------
[2016-08-08 06:29:28] mlocati at gmail dot com

Please note that the ENABLE_VIRTUAL_TERMINAL_PROCESSING flag does not affect the output of php.exe,
but just the way the console interprets it.
For instance, if we assume that the sample c program mentioned in this #72768 is compiled as
"test.exe", the contents of the file "test.txt" created with "test.exe
>test.txt 2>&1" is
<ESC>[101;93m Yellow text on red background <ESC>[0m
<ESC>[101;93m Yellow text on red background <ESC>[0m

(where <ESC> is the character with ascii code \033 (octal))

------------------------------------------------------------------------
[2016-08-05 22:19:59] kalle@php.net

It makes sense for me to add this flag to CLI, what do you think Anatol?

------------------------------------------------------------------------
[2016-08-05 16:38:07] mlocati at gmail dot com

Description:
------------
The standard console of newer versions of Windows 10 add support to ANSI control codes.
BTW, every console executable should explicitly tell to use that new feature with the flag
ENABLE_VIRTUAL_TERMINAL_PROCESSING.

For instance, at http://imgur.com/a/heYHm you see the the
output of the application compiled from the code at the bottom.

What about adding this flag to php.exe?



#include <windows.h>
#include <stdio.h>

#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif

int main(void) {
  const char* sampleText = "\033[101;93m Yellow text on red background \033[0m\n";
  HANDLE hStdout;
  DWORD handleMode;

  printf(sampleText);

  hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleMode(hStdout, &handleMode);
  handleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
  SetConsoleMode(hStdout, handleMode);
  printf(sampleText);

  return 0;
}




------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=72768&edit=1


Thread (38 messages)

« previous php.bugs (#203149) next »