diff options
author | Brad King <brad.king@kitware.com> | 2009-12-08 20:43:55 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-12-08 20:43:55 (GMT) |
commit | e4beefeb6dcc9637355a83efb89cb0c3c7fb44fd (patch) | |
tree | c28669e4dba5074de35f379fc5cebe38264cc94b /Source/cm_utf8.h | |
parent | 5872cc7c1f0b41e7b9cfe7060ef88bc69daf8219 (diff) | |
download | CMake-e4beefeb6dcc9637355a83efb89cb0c3c7fb44fd.zip CMake-e4beefeb6dcc9637355a83efb89cb0c3c7fb44fd.tar.gz CMake-e4beefeb6dcc9637355a83efb89cb0c3c7fb44fd.tar.bz2 |
CTest: Do not munge UTF-8 output in XML files
CTest filters the output from tools and tests to ensure that the XML
build/test result documents it generates have valid characters.
Previously we just converted all non-ASCII bytes into XML-escaped
Unicode characters of the corresponding index. This does not preserve
tool output encoded in UTF-8.
We now assume UTF-8 output from tools and implement decoding as
specified in RFC 3629. Valid characters are preserved, possibly with
XML escaping. Invalid byte sequences and characters are converted to
human-readable hex values with distinguishing tags. See issue #10003.
Diffstat (limited to 'Source/cm_utf8.h')
-rw-r--r-- | Source/cm_utf8.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Source/cm_utf8.h b/Source/cm_utf8.h new file mode 100644 index 0000000..06e2868 --- /dev/null +++ b/Source/cm_utf8.h @@ -0,0 +1,29 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cm_utf8_h +#define cm_utf8_h + +#ifdef __cplusplus +extern "C" { +#endif + +/** Decode one UTF-8 character from the input byte range. On success, + stores the unicode character number in *pc and returns the first + position not extracted. On failure, returns 0. */ +const char* cm_utf8_decode_character(const char* first, const char* last, + unsigned int* pc); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif |