peiyongz 2003/01/28 10:32:33 Modified: c/src/xercesc/framework XMLRecognizer.cpp XMLFormatter.hpp XMLFormatter.cpp Log: Bug#13694: Allow Xerces to write the BOM to XML files Revision Changes Path 1.5 +8 -5 xml-xerces/c/src/xercesc/framework/XMLRecognizer.cpp Index: XMLRecognizer.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLRecognizer.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- XMLRecognizer.cpp 25 Nov 2002 21:23:31 -0000 1.4 +++ XMLRecognizer.cpp 28 Jan 2003 18:32:33 -0000 1.5 @@ -151,12 +151,15 @@ return UTF_8; // - // We know its at least two bytes, so lets check for a UTF-16 BOM. That - // is quick to check and enough to identify two major encodings. + // Checking BOM for UCS-4BE, UCS-4LE, UTF-16BE and UTF-16LE // - if ((rawBuffer[0] == 0xFE) && (rawBuffer[1] == 0xFF)) + if ((rawBuffer[0] == 0x00) && (rawBuffer[1] == 0x00) && (rawBuffer[2] == 0xFE) && (rawBuffer[3] == 0xFF)) + return UCS_4B; + else if ((rawBuffer[0] == 0xFF) && (rawBuffer[1] == 0xFE) && (rawBuffer[2] == 0x00) && (rawBuffer[3] == 0x00)) + return UCS_4L; + else if ((rawBuffer[0] == 0xFE) && (rawBuffer[1] == 0xFF) && (rawBuffer[2] == 0x00) && (rawBuffer[3] != 0x00)) return UTF_16B; - else if ((rawBuffer[0] == 0xFF) && (rawBuffer[1] == 0xFE)) + else if ((rawBuffer[0] == 0xFF) && (rawBuffer[1] == 0xFE) && (rawBuffer[2] != 0x00) && (rawBuffer[3] == 0x00)) return UTF_16L; // 1.6 +7 -0 xml-xerces/c/src/xercesc/framework/XMLFormatter.hpp Index: XMLFormatter.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLFormatter.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- XMLFormatter.hpp 24 Jan 2003 20:20:22 -0000 1.5 +++ XMLFormatter.hpp 28 Jan 2003 18:32:33 -0000 1.6 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2003/01/28 18:32:33 peiyongz + * Bug#13694: Allow Xerces to write the BOM to XML files + * * Revision 1.5 2003/01/24 20:20:22 tng * Add method flush to XMLFormatTarget * @@ -307,6 +310,10 @@ ( const XMLCh toFormat ); + + void XMLFormatter::writeBOM(const XMLByte* const toFormat + , const unsigned int count); + //@} // ----------------------------------------------------------------------- 1.7 +11 -2 xml-xerces/c/src/xercesc/framework/XMLFormatter.cpp Index: XMLFormatter.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLFormatter.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- XMLFormatter.cpp 24 Jan 2003 20:24:28 -0000 1.6 +++ XMLFormatter.cpp 28 Jan 2003 18:32:33 -0000 1.7 @@ -460,7 +460,16 @@ return *this; } - +/** + * the parameter, count, is needed since stringLen() + * does not work on a BOM like "0xFE0xFF0x000x00" or + * "0x000x000xFF0xFE" + **/ +void XMLFormatter::writeBOM(const XMLByte* const toFormat + , const unsigned int count) +{ + fTarget->writeChars(toFormat, count, this); +} // --------------------------------------------------------------------------- // XMLFormatter: Private helper methods
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]