indeed there is a problem (i see it in the code).
Gius,
if you do exec append=true ... /, you'll get all the text output,
but no line breaks between each output lines. hopefully, that helps
some for now...
nant-dev,
i don't have write-access to cvs, so i'm submitting a patch here, which
i haven't tested but that's straightforward, me thinks.
the problem is in ExternalProgramBase.cs
here the code snippet that misbehaves, followed by the code that SHOULD
work.
before:
private void StreamReaderThread_Error() {
StreamReader reader = ( StreamReader )_htThreadStream[
Thread.CurrentThread.Name ];
while ( true ) {
string strLogContents = reader.ReadLine();
if ( strLogContents == null )
break;
// Ensure only one thread writes to the log at any time
lock ( _htThreadStream ) {
logger.Error(strLogContents);
//do not print LogPrefix, just pad that length...
Log.WriteLine(new string(char.Parse( ),
LogPrefix.Length) + strLogContents);
if (OutputFile != null OutputFile != ) {
StreamWriter writer = new
StreamWriter(OutputFile, OutputAppend);
writer.Write(strLogContents);
writer.Close();
}
}
}
}
after:
#1: use writer.WriteLine(...)
#2: use doAppend, not OutputAppend. doAppend initially set to
OutputAppend, then always true.
private void StreamReaderThread_Output() {
StreamReader reader = (StreamReader)
_htThreadStream[Thread.CurrentThread.Name];
bool doAppend = OutputAppend;
while (true) {
string strLogContents = reader.ReadLine();
if (strLogContents == null)
break;
// Ensure only one thread writes to the log at any time
lock (_htThreadStream) {
logger.Info(strLogContents);
//do not print LogPrefix, just pad that length.
Log(Level.Info, new string(char.Parse( ),
LogPrefix.Length) + strLogContents);
if (OutputFile != null OutputFile.Length != 0) {
StreamWriter writer = new
StreamWriter(OutputFile, doAppend);
writer.WriteLine(strLogContents);
doAppend = true;
writer.Close();
}
}
}
}
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Giuseppe Greco
Sent: Thursday, May 29, 2003 09:04
To: NAnt Users
Subject: [Nant-users] Problem with the exec task
Hi all,
There is a problem with the exec task. To produce a
Formattings Object (FO) file, I've written a task like
this:
exec program=xsltproc output=${build.dir}/mydocument.fo
commandline=mystylesheet.xsl mydocument.xml/
If you give a look at the generated mydocument.fo file,
only the first output line generated by xsltproc is there...
the rest is lost.
This is just an example; I stated the same problem with
other programs when trying to redirect output with the 'output'
property.
Gius_.
Giuseppe Greco
::agamura::
phone: +41 (0)91 604 67 65
mobile: +41 (0)76 390 60 32
email: [EMAIL PROTECTED]
web:www.agamura.com
---
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697- 6916-5
___
Nant-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/n ant-users
ExternalProgramBase.patch
Description: Binary data