[rygel] media-export: Cater for broken XML files



commit 1192616d7aa13030e14cec21decfea5c9a372ee4
Author: Jens Georg <mail jensge org>
Date:   Sat Feb 27 17:11:18 2016 +0100

    media-export: Cater for broken XML files
    
    Apparently lsdvd has issues creating proper XML:
     - It adds "Pan & Scan" without replacing & with &amp;
     - It can create invalid language codes that are not UTF-8
    
    Also, reduce the XML to the information we need.
    
    We use RECOVER mode now to properly parse the files
    
    Signed-off-by: Jens Georg <mail jensge org>

 .../rygel-media-export-dvd-container.vala          |    5 ++++-
 .../rygel-media-export-dvd-parser.vala             |    8 ++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-dvd-container.vala 
b/src/plugins/media-export/rygel-media-export-dvd-container.vala
index 486de9c..058bbbf 100644
--- a/src/plugins/media-export/rygel-media-export-dvd-container.vala
+++ b/src/plugins/media-export/rygel-media-export-dvd-container.vala
@@ -51,7 +51,10 @@ internal class Rygel.MediaExport.DVDContainer : SimpleContainer, UpdatableObject
         var doc = Xml.Parser.read_file (cache_path,
                                         null,
                                         Xml.ParserOption.NOERROR |
-                                        Xml.ParserOption.NOWARNING);
+                                        Xml.ParserOption.NOWARNING |
+                                        Xml.ParserOption.RECOVER |
+                                        Xml.ParserOption.NOENT |
+                                        Xml.ParserOption.NONET);
         this.doc = new GUPnP.XMLDoc (doc);
 
         var context = new Xml.XPath.Context (this.doc.doc);
diff --git a/src/plugins/media-export/rygel-media-export-dvd-parser.vala 
b/src/plugins/media-export/rygel-media-export-dvd-parser.vala
index 44948c2..eede661 100644
--- a/src/plugins/media-export/rygel-media-export-dvd-parser.vala
+++ b/src/plugins/media-export/rygel-media-export-dvd-parser.vala
@@ -81,7 +81,8 @@ internal class Rygel.DVDParser : GLib.Object {
             string[] args = {
                 DVDParser.lsdvd_binary_path,
                 "-Ox",
-                "-x",
+                "-a",
+                "-v",
                 "-q",
                 this.file.get_path (),
                 null
@@ -104,6 +105,9 @@ internal class Rygel.DVDParser : GLib.Object {
         return Xml.Parser.read_file (this.cache_file.get_path (),
                                      null,
                                      Xml.ParserOption.NOERROR |
-                                     Xml.ParserOption.NOWARNING);
+                                     Xml.ParserOption.NOWARNING |
+                                     Xml.ParserOption.RECOVER |
+                                     Xml.ParserOption.NOENT |
+                                     Xml.ParserOption.NONET);
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]