You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2002/09/07 02:00:58 UTC

cvs commit: xml-xalan/c/Tests/Harness FileUtility.cpp

dbertoni    2002/09/06 17:00:57

  Modified:    c/Tests/Harness FileUtility.cpp
  Log:
  Make sure non-ASCII characters are never written in their raw state.
  
  Revision  Changes    Path
  1.42      +31 -4     xml-xalan/c/Tests/Harness/FileUtility.cpp
  
  Index: FileUtility.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Tests/Harness/FileUtility.cpp,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- FileUtility.cpp	12 Aug 2002 03:52:13 -0000	1.41
  +++ FileUtility.cpp	7 Sep 2002 00:00:57 -0000	1.42
  @@ -878,6 +878,26 @@
    
   }
   
  +
  +
  +static void
  +replaceNonAsciiCharacters(
  +			char*	theBuffer,
  +			char	theReplacementChar)
  +{
  +	while(*theBuffer)
  +	{
  +		if (unsigned(*theBuffer) > 127)
  +		{
  +			*theBuffer = theReplacementChar;
  +		}
  +
  +		++theBuffer;
  +	}
  +}
  +
  +
  +
   /*	This routine is used to compare the results against the gold when one or both of 
   //  fails to parse without throwing a SAXException. When a failure is detected the 'data' 
   //  structure used to report detailed info about a failure is filled in.
  @@ -894,8 +914,10 @@
   			const char*		goldFile,
   			const char*		outputFile)
   {
  -	char rline[132] = {'0'};	// declare buffers to hold single line from file
  -	char gline[132] = {'0'};	
  +	const unsigned long		maxBuffer = 132;
  +
  +	char rline[maxBuffer] = {'0'};	// declare buffers to hold single line from file
  +	char gline[maxBuffer] = {'0'};	
   	char temp[10];				// buffer to hold line number
   	char lineNum = 1;
   
  @@ -945,11 +967,16 @@
   			if (gline[i] == rline[i]) 
   			{
   				i++;
  -				continue;
   			}
  -			else 
  +			else
   			{	// If there is a mismatch collect up the fail data and return false.  To ensure that 
   				// the results can be seen in the browser enclose the actual/expected in CDATA Sections.
  +
  +				// Replace any non-ASCII characters.  Otherwise, we would have to encode them
  +				// in UTF-8, which is a huge pain.
  +				replaceNonAsciiCharacters(gline, '?');
  +				replaceNonAsciiCharacters(rline, '?');
  +
   				data.msg = "Text based comparison failure";
   				data.expected = XalanDOMString("<![CDATA[") + XalanDOMString(gline) + XalanDOMString("]]>");
   				data.actual = XalanDOMString("<![CDATA[") + XalanDOMString(rline) + XalanDOMString("]]>");
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org