From 55c4cbbae91d1f24b30f8312156acbf9744235e5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 May 2009 10:34:35 -0400 Subject: BUG: Parse more bzr xml output encodings The BZR xml output plugin can use some encodings that are not recognized by expat, which leads to "Error parsing bzr log xml: unknown encoding". This works around the problem by giving expat a mapping, and adds a test. Patch from Tom Vercauteren. See issue #6857. --- Source/CTest/cmCTestBZR.cxx | 7 ++++++- Tests/CMakeLists.txt | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/CTest/cmCTestBZR.cxx b/Source/CTest/cmCTestBZR.cxx index 7d8aa07..8e58636 100644 --- a/Source/CTest/cmCTestBZR.cxx +++ b/Source/CTest/cmCTestBZR.cxx @@ -67,7 +67,12 @@ int cmBZRXMLParserUnknownEncodingHandler(void*, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF }; - if ( name==std::string("ascii") || name==std::string("cp1252") ) + // The BZR xml output plugin can use some encodings that are not + // recognized by expat. This will lead to an error, e.g. "Error + // parsing bzr log xml: unknown encoding", the following is a + // workaround for these unknown encodings. + if(name == std::string("ascii") || name == std::string("cp1252") || + name == std::string("ANSI_X3.4-1968")) { for(unsigned int i=0;i<256;++i) info->map[i] = latin1[i]; return 1; diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index ac38b78..29bfb52 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -939,6 +939,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel ADD_TEST(CTest.UpdateBZR ${CMAKE_CMAKE_COMMAND} -P "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR.cmake" ) + ADD_TEST(CTest.UpdateBZR.CLocale ${CMAKE_CMAKE_COMMAND} + -P "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR.cmake" + ) + SET_TESTS_PROPERTIES(CTest.UpdateBZR.CLocale PROPERTIES ENVIRONMENT LC_ALL=C) LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateBZR_DIR}") ENDIF( NOT ${xmlplugres} ) ENDIF(BZR_EXECUTABLE) -- cgit v0.12