Fix command-line colorization on Windows with VT100-compatible environments
authorMichael Paquier
Mon, 2 Mar 2020 06:46:24 +0000 (15:46 +0900)
committerMichael Paquier
Mon, 2 Mar 2020 06:46:24 +0000 (15:46 +0900)
commit3b5709e664c44c75c1d27a20c59fdbb0dec3ded5
tree55771cf00c0e143a30bf5e99170c62a057d697c8
parent96d783ae55b9406f1b5e689e1e7afe8d21e3a549
Fix command-line colorization on Windows with VT100-compatible environments

When setting PG_COLOR to "always" or "auto" in a Windows terminal
VT100-compatible, the colorization output was not showing up correctly
because it is necessary to update the console's output handling mode.
This fix allows to detect automatically if the environment is compatible
with VT100.  Hence, PG_COLOR=auto is able to detect and handle both
compatible and non-compatible environments.  The behavior of
PG_COLOR=always remains unchanged, as it enforces the use of colorized
output even if the environment does not allow it.

This fix is based on an initial suggestion from Thomas Munro.

Reported-by: Haiying Tang
Author: Juan José Santamaría Flecha
Reviewed-by: Michail Nikolaev, Michael Paquier, Haiying Tang
Discussion: https://postgr.es/m/16108-134692e97146b7bc@postgresql.org
Backpatch-through: 12
src/common/logging.c