]> git.sesse.net Git - vlc/commitdiff
Xml: added empty element detection
authorChristopher Mueller <christopher.mueller@itec.aau.at>
Tue, 30 Aug 2011 18:35:12 +0000 (11:35 -0700)
committerRémi Denis-Courmont <remi@remlab.net>
Tue, 30 Aug 2011 19:46:21 +0000 (22:46 +0300)
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
include/vlc_xml.h
modules/misc/xml/libxml.c

index df11ba5ee0454f796c34fef8c92a1a025ae463cb..e8b846de2b150dc049c6d7c2a4a621d9ec510f10 100644 (file)
@@ -74,6 +74,7 @@ struct xml_reader_t
     const char *(*pf_next_attr) ( xml_reader_t *, const char ** );
 
     int (*pf_use_dtd) ( xml_reader_t * );
+    int (*pf_is_empty) ( xml_reader_t * );
 };
 
 VLC_API xml_reader_t * xml_ReaderCreate(vlc_object_t *, stream_t *) VLC_USED;
@@ -97,6 +98,14 @@ static inline int xml_ReaderUseDTD( xml_reader_t *reader )
   return reader->pf_use_dtd( reader );
 }
 
+static inline int xml_ReaderIsEmptyElement( xml_reader_t *reader )
+{
+    if(reader->pf_is_empty == NULL)
+        return -2;
+
+    return reader->pf_is_empty( reader );
+}
+
 enum {
     XML_READER_NONE=0,
     XML_READER_STARTELEM,
index da9d065eb9dcaded32eec3d71de8841bd8cad775..50e592ee082ec8c08d99fb2f0efdd18192406b9a 100644 (file)
@@ -62,6 +62,7 @@ vlc_module_end ()
 
 static int ReaderNextNode( xml_reader_t *, const char ** );
 static const char *ReaderNextAttr( xml_reader_t *, const char ** );
+static int ReaderIsEmptyElement( xml_reader_t *);
 
 static int ReaderUseDTD ( xml_reader_t * );
 
@@ -175,6 +176,7 @@ static int ReaderOpen( vlc_object_t *p_this )
     p_reader->p_sys = p_sys;
     p_reader->pf_next_node = ReaderNextNode;
     p_reader->pf_next_attr = ReaderNextAttr;
+    p_reader->pf_is_empty = ReaderIsEmptyElement;
     p_reader->pf_use_dtd = ReaderUseDTD;
 
     return VLC_SUCCESS;
@@ -287,3 +289,8 @@ static int StreamRead( void *p_context, char *p_buffer, int i_buffer )
     stream_t *s = (stream_t*)p_context;
     return stream_Read( s, p_buffer, i_buffer );
 }
+
+static int ReaderIsEmptyElement( xml_reader_t *p_reader )
+{
+    return xmlTextReaderIsEmptyElement( p_reader->p_sys->xml );
+}