Merge 0.9->0.10
authorWaqas Hussain <waqas20@gmail.com>
Wed, 08 Oct 2014 18:42:33 -0400
changeset 6471 3728c30da4e3
parent 6467 737c81bd898e (current diff)
parent 6470 77d00a895bbd (diff)
child 6472 93ffe59a9546
child 6473 67501b5576d3
Merge 0.9->0.10
util/dataforms.lua
util/stanza.lua
--- a/util/dataforms.lua	Sun Oct 05 15:37:21 2014 +0200
+++ b/util/dataforms.lua	Wed Oct 08 18:42:33 2014 -0400
@@ -121,7 +121,7 @@
 
 	for _, field in ipairs(layout) do
 		local tag;
-		for field_tag in stanza:childtags() do
+		for field_tag in stanza:childtags("field") do
 			if field.name == field_tag.attr.var then
 				tag = field_tag;
 				break;
--- a/util/stanza.lua	Sun Oct 05 15:37:21 2014 +0200
+++ b/util/stanza.lua	Wed Oct 08 18:42:33 2014 -0400
@@ -202,8 +202,19 @@
 
 local xml_escape
 do
-	local escape_table = { ["'"] = "&apos;", ["\""] = "&quot;", ["<"] = "&lt;", [">"] = "&gt;", ["&"] = "&amp;" };
-	function xml_escape(str) return (s_gsub(str, "['&<>\"]", escape_table)); end
+	local escape_table = {
+		["'"] = "&apos;";
+		['"'] = "&quot;";
+		["<"] = "&lt;";
+		[">"] = "&gt;";
+		["&"] = "&amp;";
+		-- escape this whitespace because [\r\n\t] change into spaces in attributes
+		-- and \r\n changes into \n in text, and we want to preserve original bytes
+		["\t"] = "&#x9;";
+		["\n"] = "&#xA;";
+		["\r"] = "&#xD;";
+	};
+	function xml_escape(str) return (s_gsub(str, "['&<>\"\t\n\r]", escape_table)); end
 	_M.xml_escape = xml_escape;
 end