[vlc-devel] [PATCH 4/7] Move character escaping from the model contents, to the output helpers. This is more reliable for ensuring everythign is escaped. This allows different escaping for xml and json

Rob Jonson rob at hobbyistsoftware.com
Tue Sep 27 11:45:30 CEST 2011


---
 share/lua/http/requests/browse.xml      |    6 +++---
 share/lua/http/requests/playlist.xml    |    4 ++--
 share/lua/http/requests/status.xml      |    8 ++++----
 share/lua/intf/modules/httprequests.lua |   17 +++++++++--------
 4 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/share/lua/http/requests/browse.xml b/share/lua/http/requests/browse.xml
index b65d2b2..0afff8f 100644
--- a/share/lua/http/requests/browse.xml
+++ b/share/lua/http/requests/browse.xml
@@ -40,17 +40,17 @@ print('<root>\n')
 
 
 for i,e in ipairs(browseTable.element._array) do
-	print('<element ')
+	print('\n<element ')
 
 	for k,v in pairs(e) do
-		print(" "..k.."='"..v.."'")
+		print(" "..httprequests.xmlString(k).."='"..httprequests.xmlString(v).."'")
 	end
 
 	print('/>')
 end
 
 
-print('</root>')
+print('\n</root>')
 
 ?>
 
diff --git a/share/lua/http/requests/playlist.xml b/share/lua/http/requests/playlist.xml
index 745237f..8b8930b 100644
--- a/share/lua/http/requests/playlist.xml
+++ b/share/lua/http/requests/playlist.xml
@@ -37,7 +37,7 @@ local printleaf = function(item)
 	for k,v in pairs(item) do
 
 		if (k~="type") then
-			print(" "..k.."=\""..v.."\"")
+			print(" "..httprequests.xmlString(k).."=\""..httprequests.xmlString(v).."\"")
 		end
     end
 
@@ -56,7 +56,7 @@ local printnode = function(item)
 		elseif (k=="children") then
 			children=v._array
 		else
-			print(" "..k.."=\""..v.."\"")
+			print(" "..httprequests.xmlString(k).."=\""..httprequests.xmlString(v).."\"")
 		end
     end
 
diff --git a/share/lua/http/requests/status.xml b/share/lua/http/requests/status.xml
index c84f917..ef400ed 100644
--- a/share/lua/http/requests/status.xml
+++ b/share/lua/http/requests/status.xml
@@ -49,7 +49,7 @@ local item = vlc.input.item()
       if item then
         local metas = item:metas()
         for k,v in pairs(metas) do
-          print("<info name='"..vlc.strings.convert_xml_special_chars(k).."'>"..vlc.strings.convert_xml_special_chars(v).."</info>")
+          print("<info name='"..httprequests.xmlString(k).."'>"..httprequests.xmlString(v).."</info>")
         end
       end
     ?>
@@ -58,9 +58,9 @@ local item = vlc.input.item()
     if item then
       local info = item:info()
       for k, v in pairs(info) do
-        print("<category name='"..vlc.strings.convert_xml_special_chars(k).."'>")
+        print("<category name='"..httprequests.xmlString(k).."'>")
           for k2, v2 in pairs(v) do
-            print("<info name='"..vlc.strings.convert_xml_special_chars(k2).."'>"..vlc.strings.convert_xml_special_chars(v2).."</info>")
+            print("<info name='"..httprequests.xmlString(k2).."'>"..httprequests.xmlString(v2).."</info>")
           end
         print("</category>")
       end
@@ -73,7 +73,7 @@ local item = vlc.input.item()
       local stats = item:stats()
       for k,v in pairs(stats) do
         local tag = string.gsub(k,"_","")
-        print("<"..tag..">"..tostring(v).."</"..tag..">\n")
+        print("<"..httprequests.xmlString(tag)..">"..httprequests.xmlString(v).."</"..httprequests.xmlString(tag)..">\n")
       end
     end
   ?>
diff --git a/share/lua/intf/modules/httprequests.lua b/share/lua/intf/modules/httprequests.lua
index 7358022..efe9300 100644
--- a/share/lua/intf/modules/httprequests.lua
+++ b/share/lua/intf/modules/httprequests.lua
@@ -187,7 +187,7 @@ end
 
 --utilities for formatting output
 
-local function xmlString(s)
+function xmlString(s)
   if (type(s)=="string") then
   	return vlc.strings.convert_xml_special_chars(s)
   else
@@ -252,7 +252,7 @@ local printXmlKeyValue = function (k,v,indent)
     end
 
     if (k) then
-		print("</"..k..">")
+		print("</"..xmlString(k)..">")
 	end
 end
 
@@ -301,7 +301,7 @@ parseplaylist = function (item)
 
 	if (item.children) then
 		local result={}
-		local name = vlc.strings.convert_xml_special_chars(item.name or "")
+		local name = (item.name or "")
 
 		result["type"]="node"
 		result.id=tostring(item.id)
@@ -321,7 +321,8 @@ parseplaylist = function (item)
 		return result
 	else
 		local result={}
-		local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "")
+		local name, path = item.name or ""
+		local path = item.path or ""
 		local current_item = vlc.input.item()
 
 		-- Is the item the one currently played
@@ -376,7 +377,7 @@ getbrowsetable = function ()
 				if f == ".." or not string.match(f,"^%.") then
 				local df = common.realpath(dir..f)
 				local s = vlc.net.stat(df)
-				local path, name = vlc.strings.convert_xml_special_chars( df, f )
+				local path, name =  df, f 
 				local element={}
 
 				for k,v in pairs(s) do
@@ -485,10 +486,10 @@ local aout = vlc.object.aout()
 			local streamTable={}
 			for k2, v2 in pairs(v) do
 				local tag = string.gsub(k2," ","_")
-				streamTable[xmlString(tag)]=xmlString(v2)
+				streamTable[tag]=v2
 			end
 
-			s.information.category[xmlString(k)]=streamTable
+			s.information.category[k]=streamTable
 		end
 
 		s.stats={}
@@ -496,7 +497,7 @@ local aout = vlc.object.aout()
 		local statsdata = item:stats()
       	for k,v in pairs(statsdata) do
         	local tag = string.gsub(k,"_","")
-        s.stats[tag]=xmlString(v)
+        s.stats[tag]=v
       end
 	end
 	return s
-- 
1.7.5




More information about the vlc-devel mailing list