Преглед на файлове

* cache IsATTY value

git-svn-id: trunk@47201 -
florian преди 4 години
родител
ревизия
17c0291e86
променени са 1 файла, в които са добавени 19 реда и са изтрити 2 реда
  1. 19 2
      compiler/comphook.pas

+ 19 - 2
compiler/comphook.pas

@@ -211,10 +211,27 @@ end;
 type
   TOutputColor = (oc_black,oc_red,oc_green,oc_orange,og_blue,oc_magenta,oc_cyan,oc_lightgray);
 
+{$ifdef linux}
+const
+  CachedIsATTY : Boolean = false;
+  IsATTYValue : Boolean = false;
+
+function IsATTY(var t : text) : Boolean;
+  begin
+    if not(CachedIsATTY) then
+      begin
+        IsATTYValue:=termio.IsATTY(t)=1;
+        CachedIsATTY:=true;
+      end;
+    Result:=IsATTYValue;
+  end;
+{$endif linux}
+
+
 procedure WriteColoredOutput(var t: Text;color: TOutputColor;const s : AnsiString);
   begin
 {$ifdef linux}
-     if IsATTY(t)=1 then
+     if IsATTY(t) then
        begin
          case color of
            oc_black:
@@ -238,7 +255,7 @@ procedure WriteColoredOutput(var t: Text;color: TOutputColor;const s : AnsiStrin
 {$endif linux}
     write(t,s);
 {$ifdef linux}
-    if IsATTY(t)=1 then
+    if IsATTY(t) then
       write(t,#27'[0m');
 {$endif linux}
   end;