Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Apr 2016 15:58:46 +0000 (UTC)
From:      Li-Wen Hsu <lwhsu@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r412750 - in head/devel/kyua: . files
Message-ID:  <201604081558.u38FwkeH072140@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lwhsu
Date: Fri Apr  8 15:58:45 2016
New Revision: 412750
URL: https://svnweb.freebsd.org/changeset/ports/412750

Log:
  - Fix printing out binary/UTF-8 characters by backporting fix from 0.12
  
  Submitted by:	ngie
  Reviewed by:	rodrigc
  Approved by:	jmmv (maintainer)
  Differential Revision:	https://reviews.freebsd.org/D5851

Added:
  head/devel/kyua/files/patch-issue136   (contents, props changed)
Modified:
  head/devel/kyua/Makefile

Modified: head/devel/kyua/Makefile
==============================================================================
--- head/devel/kyua/Makefile	Fri Apr  8 15:56:03 2016	(r412749)
+++ head/devel/kyua/Makefile	Fri Apr  8 15:58:45 2016	(r412750)
@@ -2,6 +2,7 @@
 
 PORTNAME=	kyua
 PORTVERSION=	0.11
+PORTREVISION=	1
 PORTEPOCH=	3
 CATEGORIES=	devel
 MASTER_SITES=	https://github.com/jmmv/kyua/releases/download/${PORTNAME}-${PORTVERSION}/ \

Added: head/devel/kyua/files/patch-issue136
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/kyua/files/patch-issue136	Fri Apr  8 15:58:45 2016	(r412750)
@@ -0,0 +1,87 @@
+diff --git utils/text/operations.cpp utils/text/operations.cpp
+index 736e7f3..5a4345d 100644
+--- utils/text/operations.cpp
++++ utils/text/operations.cpp
+@@ -38,6 +38,9 @@ namespace text = utils::text;
+ 
+ /// Replaces XML special characters from an input string.
+ ///
++/// The list of XML special characters is specified here:
++///     http://www.w3.org/TR/xml11/#charsets
++///
+ /// \param in The input to quote.
+ ///
+ /// \return A quoted string without any XML special characters.
+@@ -46,25 +49,34 @@ text::escape_xml(const std::string& in)
+ {
+     std::ostringstream quoted;
+ 
+-    const char* delims = "\"&<>'";  // Keep in sync with 'switch' below.
+-    std::string::size_type start_pos = 0;
+-    std::string::size_type last_pos = in.find_first_of(delims);
+-    while (last_pos != std::string::npos) {
+-        quoted << in.substr(start_pos, last_pos - start_pos);
+-        switch (in[last_pos]) {
+-        case '"':  quoted << "&quot;"; break;
+-        case '&':  quoted << "&amp;"; break;
+-        case '<':  quoted << "&lt;"; break;
+-        case '>':  quoted << "&gt;"; break;
+-        case '\'': quoted << "&apos;"; break;
+-        default:   UNREACHABLE;
++    for (std::string::const_iterator it = in.begin();
++         it != in.end(); ++it) {
++        unsigned char c = (unsigned char)*it;
++        if (c == '"') {
++            quoted << "&quot;";
++        } else if (c == '&') {
++            quoted << "&amp;";
++        } else if (c == '<') {
++            quoted << "&lt;";
++        } else if (c == '>') {
++            quoted << "&gt;";
++        } else if (c == '\'') {
++            quoted << "&apos;";
++        } else if ((c >= 0x01 && c <= 0x08) ||
++                   (c >= 0x0B && c <= 0x0C) ||
++                   (c >= 0x0E && c <= 0x1F) ||
++                   (c >= 0x7F && c <= 0x84) ||
++                   (c >= 0x86 && c <= 0x9F)) {
++            // for RestrictedChar characters, escape them
++            // as '&amp;#[decimal ASCII value];'
++            // so that in the XML file we will see the escaped
++            // character.
++            quoted << "&amp;#" << static_cast< std::string::size_type >(*it)
++                   << ";";
++        } else {
++            quoted << *it;
+         }
+-        start_pos = last_pos + 1;
+-        last_pos = in.find_first_of(delims, start_pos);
+     }
+-    if (start_pos < in.length())
+-        quoted << in.substr(start_pos);
+-
+     return quoted.str();
+ }
+ 
+diff --git utils/text/operations_test.cpp utils/text/operations_test.cpp
+index 769b7d4..2d5ab36 100644
+--- utils/text/operations_test.cpp
++++ utils/text/operations_test.cpp
+@@ -77,6 +77,7 @@ ATF_TEST_CASE_BODY(escape_xml__no_escaping)
+ {
+     ATF_REQUIRE_EQ("a", text::escape_xml("a"));
+     ATF_REQUIRE_EQ("Some text!", text::escape_xml("Some text!"));
++    ATF_REQUIRE_EQ("\n\t\r", text::escape_xml("\n\t\r"));
+ }
+ 
+ 
+@@ -90,6 +91,8 @@ ATF_TEST_CASE_BODY(escape_xml__some_escaping)
+ 
+     ATF_REQUIRE_EQ("&quot;&amp;&lt;&gt;&apos;", text::escape_xml("\"&<>'"));
+     ATF_REQUIRE_EQ("&amp;&amp;&amp;", text::escape_xml("&&&"));
++    ATF_REQUIRE_EQ("&amp;#8;&amp;#11;", text::escape_xml("\b\v"));
++    ATF_REQUIRE_EQ("\t&amp;#127;BAR&amp;", text::escape_xml("\t\x7f""BAR&"));
+ }
+ 
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604081558.u38FwkeH072140>