[rygel] media-export: Cater for broken XML files
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] media-export: Cater for broken XML files
- Date: Sat, 27 Feb 2016 20:47:42 +0000 (UTC)
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 &
- 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]