2011-02-28  Ankit Jain  <radical@corewars.org>

	[xbuild] ToolTask - make error column check a little non-specific.

2011-02-28  Ankit Jain  <radical@corewars.org>

	* Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs
	(GetProcessStartInfo): Add missing api. This allows more control
	over the execution of the tool.

2010-09-16  Ankit Jain  <radical@corewars.org>

	[xbuild] Fix case sensitive environment variables for ToolTask.

	Use ProcessStringDictionary in ToolTask for EnvironmentVariables,
	as this retains the original case of the keys. Without this
	environment vars would all be passed as lowercase!

	This was removed in a previous patch by mistake.

2010-09-15  Ankit Jain  <radical@corewars.org>

	*
	class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs
	(EnvironmentVariables): New. (ExecuteTool): Merge
	EnvironmentVariables with EnvironmentOverride *
	class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/GenerateResource.cs
	(Resgen.Execute): Use EnvironmentVariables to set MONO_IOMAP=drive
	.

2010-09-15  Ankit Jain  <radical@corewars.org>

	*
	class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs
	(ExecuteTool): When StartProcess returns, the process has already
	.Start()'ed If we subscribe to the output events after that, then
	for processes that finish executing before we can subscribe, we
	won't get the output/error events at all! So, pass the handlers to
	StartProcess itself, so that they get added before the process is
	started.

2010-09-15  Ankit Jain  <radical@corewars.org>

	[xbuild] Fix handling of tool output.

	The *StreamChanged event for ProcessWrapper may get parts of long
	lines, so process the complete ones that we have (for matching
	error/warning), and save rest for processing when the rest of it
	is received.

	Also, don't ignore empty lines.

	*
	class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs

2010-08-05  Ankit Jain  <radical@corewars.org>

	[xbuild] Handle multi-line output from tool.

	Output received from the process can be multiline, split and
	process it.

2010-04-10  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs: Don't wait for the process to end, before emitting
	it's stdout/stderr, emit as it is received. This helps with time
	consuming tools.

2010-04-10  Ankit Jain  <jankit@novell.com>

	* ReservedNameUtils.cs (GetReservedMetadata): Handle empty item.

2010-04-08  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs: Use regex to parse output. Regex is from monodevelop.

2010-04-08  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (ExecuteTool): Check that the tool exists.

2010-04-03  Ankit Jain  <jankit@novell.com>

	* TargetDotNetFrameworkVersion.cs: Add Version40 .
	* Task.cs (BuildEngine2): New.
	* ToolLocationHelper.cs: Use class/lib/net_* as the path
	for the assemblies and targets when running tests.
	Environment variable TESTING_MONO is set for testing.
	This allows a 4.0 xbuild to build 2.0/3.5 projects.

2010-02-19  Ankit Jain  <jankit@novell.com>

	* TaskItem.cs: Track api changes.

2010-02-10  Ankit Jain  <jankit@novell.com>

	* ProcessService.cs (globalEnvironmentVariablesOverride): Use
	ProcessStringDictionary instead of StringDictionary.
	ProcessStringDictionary retains the case of the keys (env vars
	here).
	* ToolTask.cs (environmentOverride): Likewise.

2010-02-10  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (ExecuteTool): Use the virtual method
	Standard*LoggingImportance, instead of the underlying field.
	(LogEventsFromTextOutput): Use @importance argument for LogMessage.
	(LogToolCommand): Remove MonoTODO.

2010-02-06  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (SkipTaskExecution): Use ValidateParameters method.
	Remove some MonoTODOs.

2009-11-25  Ankit Jain  <jankit@novell.com>

	* ToolLocationHelper.cs: Set directory for 3.0 framework
	to "2.0"

2009-11-09  Ankit Jain  <jankit@novell.com>

	* TargetDotNetFrameworkVersion.cs (Version30):
	(Version35): New.
	* ToolLocationHelper.cs: Support 3.0 and 3.5 also.

2009-10-13  Ankit Jain  <jankit@novell.com>

	* TaskLoggingHelper.cs:
	* ToolTask.cs: Fix warnings.

2009-10-12  Ankit Jain  <jankit@novell.com>

	* TaskLoggingHelper.cs: Use the buildEngine.ProjectFileOfTaskNode
	in the event args.

2009-10-12  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (ExecuteTool): Don't set toolOutput to null.
	(HandleTaskExecutionErrors): toolOutput can be null.
	Set toolOutput to null here.

2009-10-06  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (Execute): HandleTaskExecutionErrors is called only
	if exitCode != 0.
	(ExecuteTool): Move logging of exitcode to HandleTaskExecutionErrors.
	Remove MonoTODOs.
	* TaskLoggingHelper.cs (LogMessageFromText): New.
	(LogMessage): Refactor to use above.

2009-10-02  Ankit Jain  <jankit@novell.com>

	* AppDomainIsolatedTask.cs (BuildEngine): Init 'log'.

2009-09-29  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (ExecuteTool): Use LogToolCommand, instead of
	directly logging.
	(LogToolCommand): Implement.

2009-09-28  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (ProcessOuputTool): Move logging of tool
	output from here to ..
	(ExecuteTool): .. here. As, ProcessOuputTool can be
	overridden.

2009-09-24  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (HasLoggedErrors): Add missing property.

2009-09-23  Ankit Jain  <jankit@novell.com>

	* TaskLoggingHelper.cs (LogErrorFromException): Add missing overload.

2009-09-10  Ankit Jain  <jankit@novell.com>

	* TaskLoggingHelper.cs (FormatString): Use the unformatted string
	even if the args array was empty.

2009-09-08  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (LogEventsFromTextOutput): Log message even if its not
	identified as an error or a warning.

2009-07-28  Ankit Jain  <jankit@novell.com>

	* ToolTask (.ctor): Initialize Timeout value.
	(Execute): Use HandleTaskExecutionErrors to determine task result. Set
	exitCode to the result of ExecuteTool and let HandleTaskExecutionErrors
	determine final result of the task.
	(RealExecute): Rename to ..
	(ExecuteTool): .. this. @responseFileCommands could be empty.
	Use specified timeout value for the executing tool.
	Rename 'compilerOutput' to 'toolOutput'. Cleanup resources in the
	finally block. Move processing of stdout/stderr output to ..
	(ProcessOutputFile): .. here and ..
	(LogEventsFromTextOutput): .. here.
	(HandleTaskExecutionErrors): Implement.
	(DeleteTempFile): Implement.

2009-04-24  Ankit Jain  <jankit@novell.com>

	* ToolTask.cs (RealExecute): Handle TypeLoadExceptions, compiler
	crashes and report them. Borrow some tricks from md.
	(LogEventsFromTextOutput): Ignore known non-error messages. Don't
	log unknown lines, crashes get handled elsewhere.

2009-04-08  Ankit Jain  <jankit@novell.com>

	Fix bug #491828.
	* ToolTask.cs (LogEventsFromTextOutput): Log even in case of
	unrecognized errors.

2009-02-25  Ankit Jain  <jankit@novell.com>

	* ProcessService.cs, IAsyncOperation.cs, IProcessAsyncOperation.cs,
	ProcessWrapper.cs: Brought in from monodevelop.
	* ToolTask.cs: Use the new ProcessService to execute the tool. Honor
	SkipTaskExecution (). Use response files, but log the contents of the
	response file instead of "@foo.rsp". Support environmentOverrides.
	(LogEventsFromTextOutput): Add null check.
	* Exec.cs (GetWorkingDirectory): Use the workingDirectory property.

2009-02-20  Ankit Jain  <jankit@novell.com>

	Fix bug #475438.
	* ToolTask.cs (RealExecute): Check whether the target executable exists.
	Log any execution errors.

2008-08-06  Ankit Jain  <jankit@novell.com>

	* CommandLineBuilder.cs (AppendSwitchIfNotNull): Quote individual items
	of the array.

2008-07-31  Ankit Jain  <jankit@novell.com>

	* CommandLineBuilder.cs (chars): Use a char array instead of a
	hashtable. Add ';' to the list.
	(embeddedQuotes): Regex not required.
	(IsQuotingRequired): Update.
	(VerifyThrowNoEmbeddedDoubleQuotes): Update.
	Use VerifyThrowNoEmbeddedDoubleQuotes at appropriate points (see tests).

2007-05-16  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs: Add quotes when there are needed.

2007-01-06  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolLocationHelper.cs: Implemented GetPathToDotNetFramework () and
	GetPathToDotNetFrameworkSdk ().

2006-12-29  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolTask.cs (LogEventsFromTextOutput): This method is actually
	protected so we can't remove second parameter.

2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* Logger.cs (FormatErrorEvent, FormatWarningEvent): Write only (a) or
	(a,b) or (a,b,c,d).

	* CommandLineBuilder.cs: Added null checks.

2006-12-18  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs (VerifyThrowNoEmbeddedDoubleQuotes):
	Implemented.

2006-12-04  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskItem.cs: Add a hack that will replace '\\' with
	Path.DirectorySeparatorChar.

2006-12-04  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolTask.cs: Changed importance to Normal.

2006-10-08  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskLoggingHelper.cs: Changed "" to String.Empty.

2006-10-06  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskLoggingHelper.cs: Made LogErrorFromException () show stack trace
	by default.

2006-09-30  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ReservedNameUtils.cs: Added a null check.

2006-06-22  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolTask.cs: Added some [MonoTODO]s.

2006-05-27  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs: Corrected IsQuotingRequired ().
	* TaskLoggingHelper.cs: Added null check.

2006-05-26  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* Logger.cs: Added MonoTODO.
	* TaskLoggingHelper.cs: Changed helpKeywordPrefix to helpKeyword. It
	looks like it's still wrong.

2006-05-03  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolTask.cs: Fixed exit code.

2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolTask.cs, TaskItem.cs: Small fixes.
	* TaskLoggingHelper.cs: Added checking for null parameters.

2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskItem.cs: Moved checking if metadata name is reserved to internal
	class (Mono.XBuild.Utilities.ReservedNameUtils).

2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskItem.cs: Coding style changes.

2006-03-29  Crestez Leonard  <cdleonard@gmail.com>

	* TaskItem.cs: Cleaned up.

2006-03-11  Marek Sieradzki  <marek.sieradzki@gmail.com> 

	* CommandLineBuilder.cs: Corrected exceptions throwing.
	* TaskItem.cs: Fixed MetadataNames property.

2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs: Fixed a typo.
	* HostObjectInitializationStatus.cs: Fixed order.
	* ToolTask.cs: Updated for new API.

2006-02-25  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* HostObjectInitializationStatus.cs: Added.

2006-02-25  Marek Sieradzki  <marek.sieradzki@gmail.com> 

	* CommandLineBuilder.cs, Logger.cs, TaskLoggingHelper.cs, ToolTask.cs
	: Updated API.

2006-02-24  Marek Sieradzki  <marek.sieradzki@gmail.com> 

	* AppDomainIsolatedTask.cs, Task.cs: Quick hacks to make it compile with
	new API.

2005-09-22  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs, Logger.cs, AppDomainIsolatedTask.cs,
	ToolTask.cs, TaskItem.cs, Task.cs, ToolLocationHelper.cs,
	TargetDotNetFrameworkVersion.cs, ConcurrentLoggingHelper.cs,
	TaskLoggingHelper.cs: Added #if NET_2_0.

2005-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* ToolTask.cs: Formatting.
	* TaskItem.cs: Removed obsoleted code.
	* ToolLocationHelper.cs: Formatting.

2005-09-09  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs, Logger.cs, AppDomainIsolatedTask.cs,
	ConcurrentLoggingHelper.cs, TaskLoggingHelper.cs: Changed protected
	fields to private.

2005-08-30  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskItem.cs, TaskLoggingHelper.cs: Formatting.

2005-08-27  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* Logger.cs: Formatting.
	* ToolTask.cs: Added error/warning handling.
	* TaskLoggingHelper.cs: Fixed LogErrorFromException ().

2005-08-24  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs: Added checking for null values.
	* ToolTask.cs: Added real execution.
	* Task.cs: Changed all fields to private.
	* TaskLoggingHelper.cs: Formatting.

2005-08-19  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskItem.cs: MetadataCount fixed.

2005-08-16  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* Task.cs: Added creation of TaskLoggingHelper.cs.
	* TaskLoggingHelper.cs: Ctor uses Task's BuildEngine.

2005-08-14  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* TaskItem.cs: Added GetMetadata and fixed other functions.

2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* CommandLineBuilder.cs: Add appending spaces (currently commented)
	* ToolTask.cs: Add process.

2005-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* AppDomainIsolatedTask.cs, CommandLineBuilder.cs,
	ConcurrentLoggingHelper.cs, Logger.cs, Task.cs, TaskItem.cs,
	TaskLoggingHelper.cs, ToolTask.cs: Various fixes.

2005-07-13  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* Logger.cs, AppDomainIsolatedTask.cs, ToolTask.cs, TaskItem.cs,
	ConcurrentLoggingHelper.cs, TaskLoggingHelper.cs: Small fixes, still
	unusable

2005-07-05  Marek Sieradzki  <marek.sieradzki@gmail.com>

	* AppDomainIsolatedTask.cs, CommandLineBuilder.cs,
	ConcurrentLoggingHelper.cs, Logger.cs, MonoTODOAttribute.cs,
	TargetDotNetFrameworkVersion.cs, Task.cs, TaskItem.cs,
	TaskLoggingHelper.cs, ToolLocationHelper.cs, ToolTask.cs: Initial
	check-in, very buggy
