]> git.sesse.net Git - vlc/blobdiff - modules/misc/xml/libxml.c
* modules/misc/xml/*, include/vlc_xml.h: new xml_ReaderUseDTD() api to enable/disable...
[vlc] / modules / misc / xml / libxml.c
index 935f02bdb1c7de862646ff6bb5857bafb8239d54..0b46e62be3baa417d033003539bc9ada05329d7d 100644 (file)
@@ -59,6 +59,8 @@ static char *ReaderName( xml_reader_t * );
 static char *ReaderValue( xml_reader_t * );
 static int ReaderNextAttr( xml_reader_t * );
 
+static int ReaderUseDTD ( xml_reader_t *, vlc_bool_t );
+
 static void CatalogLoad( xml_t *, const char * );
 static void CatalogAdd( xml_t *, const char *, const char *, const char * );
 static int StreamRead( void *p_context, char *p_buffer, int i_buffer );
@@ -136,10 +138,6 @@ static xml_reader_t *ReaderCreate( xml_t *p_xml, stream_t *p_stream )
     p_reader->p_sys->p_reader = p_libxml_reader;
     p_reader->p_xml = p_xml;
 
-    /* Activate DTD validation */
-    xmlTextReaderSetParserProp( p_libxml_reader, XML_PARSER_DEFAULTATTRS, 1 );
-    xmlTextReaderSetParserProp( p_libxml_reader, XML_PARSER_VALIDATE, 1 );
-
     /* Set the error handler */
     xmlTextReaderSetErrorHandler( p_libxml_reader,
                                   ReaderErrorHandler, p_reader );
@@ -150,6 +148,7 @@ static xml_reader_t *ReaderCreate( xml_t *p_xml, stream_t *p_stream )
     p_reader->pf_name = ReaderName;
     p_reader->pf_value = ReaderValue;
     p_reader->pf_next_attr = ReaderNextAttr;
+    p_reader->pf_use_dtd = ReaderUseDTD;
 
     return p_reader;
 }
@@ -161,6 +160,17 @@ static void ReaderDelete( xml_reader_t *p_reader )
     free( p_reader );
 }
 
+static int ReaderUseDTD ( xml_reader_t *p_reader, vlc_bool_t b_use )
+{
+    /* Activate DTD validation */
+    xmlTextReaderSetParserProp( p_reader->p_sys->p_reader,
+                                XML_PARSER_DEFAULTATTRS, b_use );
+    xmlTextReaderSetParserProp( p_reader->p_sys->p_reader,
+                                XML_PARSER_VALIDATE, b_use );
+
+    return VLC_SUCCESS;
+}
+
 static int ReaderRead( xml_reader_t *p_reader )
 {
     int i_ret = xmlTextReaderRead( p_reader->p_sys->p_reader );