]> git.etc.gen.nz Git - mythtv-status.git/commitdiff
Clean out the bad UTF-8 characters.
authorAndrew Ruthven <andrew@etc.gen.nz>
Thu, 29 Nov 2007 17:46:57 +0000 (06:46 +1300)
committerAndrew Ruthven <andrew@etc.gen.nz>
Thu, 29 Nov 2007 17:46:57 +0000 (06:46 +1300)
ChangeLog
bin/mythtv-status

index 87f636702c721a88581a53db324b859b5c7060bc..e03f14c4fbe74bb48faec26ab1a40f4c3e0475aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2007-11-28     Andrew Ruthven
        Be more wary about processing what the backend has sent us.
+               This includes cleaning up some invalid UTF-8 characters.
        Add support for reading XML from a file.
        Be a bit more forgiving on the XML we're receiving.
        Show how much disk space is used - currently only total.
index 68192ae1142b4103e11ee8bfcbc98b78d8f9d520..aa5665e4bb2a08945577ad559889dae9899d7322 100755 (executable)
@@ -355,6 +355,8 @@ sub load_xml {
   $parser->recover_silently(1)
     unless $verbose;
 
+  clean_xml(\$status);
+
   my $xml = eval { $parser->parse_string( $status ) };
 
   if ($@) {
@@ -381,6 +383,20 @@ sub load_perl_api {
   return $myth;
 }
 
+# We are sometimes passed dodgy XML from MythTV, make some attempts to clean
+# it.
+sub clean_xml {
+  my ($xml) = shift;
+
+  # Deal to invalid Unicode.
+  for my $bad ("&#xdbff;", "&#xdee9;") {
+    if ($$xml =~ s/$bad/?/g) {
+      warn "Found and replaced: $bad\n"
+        if $verbose;
+    }
+  }
+}
+
 sub process_xml {
   my ($block, $xml) = @_;