groffstudio

Diff
Login

Diff

Differences From Artifact [244f78b094]:

To Artifact [3ba7102513]:


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
implementation

{$R *.lfm}

function TBuildStatusWindow.BuildDocument(CommandLine: String; LogFile: String): Boolean;
var
  p: TProcess;
  n: LongInt;
  str: String;
  lh: TextFile;
begin
  p := TProcess.Create(nil);
  p.Options := p.Options + [poUsePipes, poStderrToOutPut];

{$IFDEF WINDOWS}







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
implementation

{$R *.lfm}

function TBuildStatusWindow.BuildDocument(CommandLine: String; LogFile: String): Boolean;
var
  p: TProcess;
  n, total: LongInt;
  str: String;
  lh: TextFile;
begin
  p := TProcess.Create(nil);
  p.Options := p.Options + [poUsePipes, poStderrToOutPut];

{$IFDEF WINDOWS}
63
64
65
66
67
68
69


70
71
72
73

74
75
76
77
78
79
80
81
82
83

84
85
86
87
88


89
90
91
92
93
94
95
96
97
98
99
100
101
  p.Parameters.Add(CommandLine);
  p.Execute;

  if LogFile <> '' then
  begin
    AssignFile(lh, LogFile);
    Rewrite(lh);



    while p.Running do
    begin
      n := p.Output.Read(str, 2048);

      if n > 0 then
      begin
        writeln(lh, str);
      end
      else Sleep(100);
    end;

    { We might have some buffer contents left. }
    repeat
      n := p.Output.Read(str, 2048);

      if n > 0 then
      begin
        writeln(lh, str);
      end;
    until n <= 0;



    CloseFile(lh);
  end;

  result := p.ExitStatus > 0;
  p.Free;

  { Close the status window: }
  Close;
end;

end.








>
>




>










>





>
>













63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  p.Parameters.Add(CommandLine);
  p.Execute;

  if LogFile <> '' then
  begin
    AssignFile(lh, LogFile);
    Rewrite(lh);

    total := 0;

    while p.Running do
    begin
      n := p.Output.Read(str, 2048);
      total := total + n;
      if n > 0 then
      begin
        writeln(lh, str);
      end
      else Sleep(100);
    end;

    { We might have some buffer contents left. }
    repeat
      n := p.Output.Read(str, 2048);
      total := total + n;
      if n > 0 then
      begin
        writeln(lh, str);
      end;
    until n <= 0;

    if total = 0 then writeln(lh, 'No errors occurred. :-)');

    CloseFile(lh);
  end;

  result := p.ExitStatus > 0;
  p.Free;

  { Close the status window: }
  Close;
end;

end.