[fpc-devel] Output flush on pipes

Michael Van Canneyt michael at freepascal.org
Sun May 14 12:10:14 CEST 2006



On Sun, 14 May 2006, Mattias Gaertner wrote:

> On Sun, 14 May 2006 12:03:34 +0200 (CEST)
> Michael Van Canneyt <michael at freepascal.org> wrote:
> 
> > 
> > 
> > On Sun, 14 May 2006, Daniël Mantione wrote:
> > 
> > > 
> > > 
> > > Op Sun, 14 May 2006, schreef Michael Van Canneyt:
> > > 
> > > > 
> > > > 
> > > > On Sun, 14 May 2006, Daniël Mantione wrote:
> > > > 
> > > > > 
> > > > > 
> > > > > Op Sun, 14 May 2006, schreef Martin Schreiber:
> > > > > 
> > > > > > Since some time FPC doesn't  flush output on pipes after writeln.
> > > > > > On linux I can use a pseudo terminal, what can I do on win32 to
> > > > > > get flushed  output from FPC into the message window of MSEide?
> > > > > 
> > > > > It is strongly recommended against to parse the compiler output, as
> > > > > it is  designed for humans, not computers. The formatting of the
> > > > > compiler output  can therefore change in time and can also be
> > > > > configured by the user in any  language. Some people are doing it
> > > > > anyway, like Lazarus.
> > > > > 
> > > > > The compiler has an interface designed for computers and that is
> > > > > through  the compiler and comphook units. This allows you to
> > > > > retrieve the messages  neatly. If you want process separation,
> > > > > please write a wrapper that puts  the messages in a computer
> > > > > friendly way, and we'll include it in FPC.
> > > > 
> > > > We could do this ourselves by assigning a unique number to each error.
> > > > (and keeping these numbers)
> > > 
> > > I think a command line output for computers needs to be a bit more 
> > > advanced, take for example this error message:
> > > 
> > > testc.pas(11,1) Fatal: Syntax error, "BEGIN" expected but "identifier Z"
> > > found
> > > 
> > > We have:
> > > * The source file
> > > * The error location
> > > * The error severity
> > > * The error message, containing two parameters.
> > > 
> > > Both the severity and error message are currently unpredictable, i.e.
> > > they  can be translated for example. Some IDE's may want to have access
> > > to the  error messages their parameters as well.
> > > 
> > > A command line output for computers also needs to be extendable, if we 
> > > want to output more information, this should not break existing 
> > > applications.
> > > 
> > > For example, a good way to output this error message in a computer
> > > friendly format would be:
> > > 
> > > error:(file='testc.pas';line=11;column=1;message_code='02003_F';
> > >        message='Syntax error, $1 expected but $2 found';
> > >        parameters=('BEGIN','IDENTIFIER Z'));
> > 
> > I'm all for such a message form; it should be easy to add with some -v
> > switch... But  
> > - This is no use if the message code changes over time,
> >   because that is still the unique identifier for the error...
> > - The message itself should not be given, IMHO. 
> >   The program can look it up in the error message file...
> 
> How can it find out, which message file to use?

There is only 1 message file ? errore.msg for english...
located next to the compiler binary...

Michael.


More information about the fpc-devel mailing list