aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/errorout.adb22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/vhdl/errorout.adb b/src/vhdl/errorout.adb
index f65cb555f..6b2c36e3b 100644
--- a/src/vhdl/errorout.adb
+++ b/src/vhdl/errorout.adb
@@ -15,7 +15,9 @@
-- along with GHDL; see the file COPYING. If not, write to the Free
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-- 02111-1307, USA.
+
with Ada.Text_IO;
+with GNAT.OS_Lib;
with Scanner;
with Name_Table;
with Iirs_Utils; use Iirs_Utils;
@@ -34,14 +36,28 @@ package body Errorout is
-- Set Flag_Color_Diagnostics to On or Off if is was Auto.
procedure Detect_Terminal
is
+ -- Import isatty.
function isatty (Fd : Integer) return Integer;
pragma Import (C, isatty);
+
+ -- Awful way to detect if the host is Windows. Should be replaced by
+ -- a host-specific package.
+ Is_Windows : constant Boolean := GNAT.OS_Lib.Directory_Separator = '\';
begin
if Flag_Color_Diagnostics = Auto then
- if isatty (2) /= 0 then
- Flag_Color_Diagnostics := On;
- else
+ if Is_Windows then
+ -- Off by default on Windows, as the consoles may not support
+ -- ANSI control sequences. Should be replaced by calls to the
+ -- Win32 API.
Flag_Color_Diagnostics := Off;
+ else
+ -- On Linux/Unix/Mac OS X: use color only when the output is to a
+ -- tty.
+ if isatty (2) /= 0 then
+ Flag_Color_Diagnostics := On;
+ else
+ Flag_Color_Diagnostics := Off;
+ end if;
end if;
end if;
end Detect_Terminal;