Index: src/NAnt.Core/Resources/Strings.resx
===================================================================
RCS file: /cvsroot/nant/nant/src/NAnt.Core/Resources/Strings.resx,v
retrieving revision 1.14
diff -r1.14 Strings.resx
530a531
>      <!--Messages From: \NAnt.Core/Tasks/ExternalProgramBase.cs-->
Index: src/NAnt.Core/Tasks/ExecTask.cs
===================================================================
RCS file: /cvsroot/nant/nant/src/NAnt.Core/Tasks/ExecTask.cs,v
retrieving revision 1.37
diff -r1.37 ExecTask.cs
85a86
> 		private FileInfo _input;
87a89
> 		private bool _quiet;
199a202
> 		[BooleanValidator()]
296a300,327
> 		/// <summary>
>         /// Specifies whether the program output should be ommited
> 		/// from build log. This does not affect <see cref="Output" />.
>         /// The default is <see langword="false" />.
>         /// </summary>
>         /// <value>
>         /// <see langword="true" /> if the standard output of the external
> 		/// program should not be printed; otherwise, <see langword="false" />.
>         /// </value>
> 		[TaskAttribute("quiet", Required=false)]
> 		[BooleanValidator()]
>         public override bool Quiet {
>             get { return _quiet; }
>             set { _quiet = value; }
>         }
> 
> 		/// <summary>
>         /// The file from which the standard output will be read.
>         /// </summary>
>         /// <remarks>
>         /// By default, the standard input is read from the console.
>         /// </remarks>
>         [TaskAttribute("input", Required=false)]
>         public override FileInfo Input {
>             get { return _input; }
>             set { _input = value; }
>         }
> 
305a337
> 		[BooleanValidator()]
Index: src/NAnt.Core/Tasks/ExternalProgramBase.cs
===================================================================
RCS file: /cvsroot/nant/nant/src/NAnt.Core/Tasks/ExternalProgramBase.cs,v
retrieving revision 1.68
diff -r1.68 ExternalProgramBase.cs
45a46
> 		private StreamWriter _stdIn;
133c134,152
<             get { return null; } 
---
>             get { return null; }
>             set {} //so that it can be overriden.
>         }
> 
> 		/// <summary>
>         /// Gets the file from which the standard input should be read.
>         /// </summary>
>         /// <value>
>         /// The file from which the standard input should be read, or
>         /// <see langword="null" /> if the standard input should not be
>         /// redirected.
>         /// </value>
>         /// <remarks>
>         /// The default implementation will never allow the standard input
>         /// to be redirected.  Deriving classes should override this
>         /// property to change this behaviour.
>         /// </remarks>
>         public virtual FileInfo Input {
>             get { return null; }
210a230,243
> 		/// <summary>
>         /// Gets and sets whether the program output should be ommited
> 		/// from build log. This does not affect <see cref="Output" />.
>         /// The default is <see langword="false" />.
>         /// </summary>
>         /// <value>
>         /// <see langword="true" /> if the standard output of the external
> 		/// program should not be printed; otherwise, <see langword="false" />.
>         /// </value>
>         public virtual bool Quiet {
>             get { return false; }
>             set {} //so that it can be overriden.
>         }
> 
281a315
> 			Thread inputThread = null;
287a322
> 				inputThread = new Thread(CreateInputThread());
290a326
> 				_stdIn = process.StandardInput;
293a330
> 				inputThread.Start();
300a338
> 				inputThread.Join(2000);
344a383,386
> 				// ensure inputThread is always aborted
>                 if (inputThread != null && inputThread.IsAlive) {
>                     inputThread.Abort();
>                 }
395a438
> 			process.StartInfo.RedirectStandardInput = true;
449a493,533
> 		/// <summary>
>         /// Checks for the existence of requested input file.
>         /// </summary>
> 		/// <returns>
>         /// ThreadStart instance for the input thread.
>         /// </returns>
> 		/// <exception cref="BuildException">The input file does not exist.</exception>
> 		private ThreadStart CreateInputThread()
> 		{
> 			if (Input != null && !File.Exists(Input.FullName))
> 			throw new BuildException(
> 					string.Format(
> 						CultureInfo.InvariantCulture,
> 						ResourceUtils.GetString("NA1129"), Input.FullName));
> 			return new ThreadStart(StreamWriterThread_Input);
> 		}
> 
> 		/// <summary>
>         /// Reads from the stream until the external program is ended.
>         /// </summary>
>         private void StreamWriterThread_Input() {
>             StreamWriter writer = _stdIn;
> 			StreamReader reader;
> 			if (Input != null)
> 			{
> 				reader = new StreamReader(Input.FullName);
> 
> 				while (true) {
> 					string logContents = reader.ReadLine();
> 					if (logContents == null) {
> 						break;
> 					}
> 
> 					writer.WriteLine(logContents);
>                 }
> 
> 				writer.Close();
> 				reader.Close();
>             }
>         }
> 
465c549,550
<                     OutputWriter.WriteLine(logContents);
---
> 					if (!Quiet)
>                     	OutputWriter.WriteLine(logContents);
Index: src/NAnt.SourceControl/Tasks/AbstractCvsTask.cs
===================================================================
RCS file: /cvsroot/nant/nant/src/NAnt.SourceControl/Tasks/AbstractCvsTask.cs,v
retrieving revision 1.61
diff -r1.61 AbstractCvsTask.cs
365c365
<         public bool Quiet {
---
>         public override bool Quiet {