--- 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 = { ["'"] = "'", ["\""] = """, ["<"] = "<", [">"] = ">", ["&"] = "&" };
- function xml_escape(str) return (s_gsub(str, "['&<>\"]", escape_table)); end
+ local escape_table = {
+ ["'"] = "'";
+ ['"'] = """;
+ ["<"] = "<";
+ [">"] = ">";
+ ["&"] = "&";
+ -- 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"] = "	";
+ ["\n"] = "
";
+ ["\r"] = "
";
+ };
+ function xml_escape(str) return (s_gsub(str, "['&<>\"\t\n\r]", escape_table)); end
_M.xml_escape = xml_escape;
end