60 #define XSPF_READER_TEXT_ONE_ATTRIBUTE_FORBIDDEN _PT("Attribute '%s' not allowed.") 61 #define XSPF_READER_TEXT_ONE_EXPAT_ERROR _PT("Expat error '%s'") 62 #define XSPF_READER_TEXT_ONE_ELEMENT_FORBIDDEN _PT("Element '%s' not allowed.") 63 #define XSPF_READER_TEXT_ONE_ELEMENT_FORBIDDEN_VERSION_ZERO _PT("Element '%s' not allowed in XSPF-0.") 64 #define XSPF_READER_TEXT_ONE_FILE_READING_ERROR _PT("File '%s' could not be read.") 65 #define XSPF_READER_TEXT_ONE_WRONG_ROOT_NAME _PT("Root element must be '") XSPF_NS_HOME XSPF_NS_SEP_STRING _PT("playlist', not '%s'.") 66 #define XSPF_READER_TEXT_ONE_WRONG_VERSION _PT("Version must be '0' or '1', not '%s'.") 69 #define XSPF_READER_TEXT_ZERO_ATTRIBUTE_MISSING(name) _PT("Attribute '") name _PT("' missing.") 70 #define XSPF_READER_TEXT_ZERO_ELEMENT_MISSING(ns, name) _PT("Element '") ns XSPF_NS_SEP_STRING name _PT("' missing.") 71 #define XSPF_READER_TEXT_ZERO_ELEMENT_MISSING_VERSION_ZERO(ns, name) _PT("Element '") ns XSPF_NS_SEP_STRING name _PT("' missing. This is not allowed in XSPF-0.") 72 #define XSPF_READER_TEXT_ZERO_FILENAME_NULL _PT("Filename must not be NULL.") 73 #define XSPF_READER_TEXT_ZERO_TOO_MANY_ELEMENTS(ns, name) _PT("Only one '") ns XSPF_NS_SEP_STRING name _PT("' allowed.") 74 #define XSPF_READER_TEXT_ZERO_WRONG_ATTRIBUTE_TYPE(attr, type) _PT("Attribute '") attr _PT("' is not a valid ") type _PT(".") 75 #define XSPF_READER_TEXT_ZERO_WRONG_CONTENT_TYPE(ns, elem, type) _PT("Content of '") ns XSPF_NS_SEP_STRING elem _PT("' is not a valid ") type _PT(".") 76 #define XSPF_READER_TEXT_ZERO_TEXT_FORBIDDEN(ns, elem) _PT("Content of '") ns XSPF_NS_SEP_STRING elem _PT("' must be whitespace or child elements, not text.") 77 #define XSPF_READER_TEXT_ZERO_KEY_WITHOUT_VERSION(name) _PT("Attribute '") name _PT("' does not carry version information.") 78 #define XSPF_READER_TEXT_ZERO_KEY_WITH_REL_URI(name) _PT("Attribute '") name _PT("' does not contain an absolute URI.") 104 XSPF_READER_ERROR_MALICIOUS_LOOKUP_DEPTH,
109 XSPF_READER_ERROR_EXPAT = 0x1000
203 class XspfReaderPrivate;
213 XspfReaderPrivate *
const d;
255 XML_Char
const * baseUri);
270 XML_Char
const * baseUri);
372 bool handleError(
int code, XML_Char
const * text);
382 bool handleError(
int code, XML_Char
const * format, XML_Char
const * param);
390 void handleFatalError(
int code, XML_Char
const * text);
399 void handleFatalError(
int code, XML_Char
const * format, XML_Char
const * param);
408 bool handleWarning(
int code, XML_Char
const * text);
414 void setExpatError();
427 void handleStart(XML_Char
const * fullName, XML_Char
const ** atts);
436 bool handleStartOne(XML_Char
const * fullName, XML_Char
const ** atts);
445 bool handleStartTwo(XML_Char
const * fullName, XML_Char
const ** atts);
454 bool handleStartThree(XML_Char
const * fullName, XML_Char
const ** atts);
463 bool handleStartFour(XML_Char
const * fullName, XML_Char
const ** atts);
471 void handleCharacters(XML_Char
const * s,
int len);
479 void handleEntityDeclaration(XML_Char
const * entityName,
480 XML_Char
const * value);
487 void handleEnd(XML_Char
const * fullName);
495 bool handleEndOne(XML_Char
const * fullName);
503 bool handleEndTwo(XML_Char
const * fullName);
511 bool handleEndThree(XML_Char
const * fullName);
519 bool handleEndFour(XML_Char
const * fullName);
528 bool handlePlaylistAttribs(XML_Char
const ** atts);
538 bool handleMetaLinkAttribs(XML_Char
const ** atts, XML_Char
const * & rel);
548 bool handleExtensionAttribs(XML_Char
const ** atts,
549 XML_Char
const * & application);
557 bool handleNoAttribsExceptXmlBase(XML_Char
const ** atts);
571 static void masterStart(
void * userData, XML_Char
const * fullName, XML_Char
const ** atts);
579 static void masterEnd(
void * userData, XML_Char
const * fullName);
588 static void masterCharacters(
void * userData, XML_Char
const * s,
int len);
603 static void masterEntityDeclaration(
void * userData, XML_Char
const * entityName,
604 int is_parameter_entity, XML_Char
const * value,
int value_length,
605 XML_Char
const * base, XML_Char
const * systemId, XML_Char
const * publicId,
606 XML_Char
const * notationName);
616 XML_Char
const * baseUri);
630 static bool isXmlBase(XML_Char
const * attributeKey);
639 bool handleXmlBaseAttribute(XML_Char
const * xmlBase);
648 XML_Char * makeAbsoluteUri(XML_Char
const * sourceUri)
const;
682 bool checkAndSkipNamespace(XML_Char
const * fullName,
683 XML_Char
const * & localName);
689 void notifySuccess()
const;
698 #endif // XSPF_READER_H void enableMaliciousXmlDetection(bool enabled)
playlist.tracklist.track.info tag
Required attribute missing.
playlist.tracklist.track.link tag
playlist.tracklist.track tag
playlist.tracklist.track.extension tag
int parseMemory(char const *memory, int numBytes, XspfReaderCallback *callback, XML_Char const *baseUri)
playlist.tracklist.track.image tag
XspfReader(XspfExtensionReaderFactory *handlerFactory=NULL)
First user/extension tag code.
A key attribute holds an unversioned URI.
static bool isXmlBase(XML_Char const *attributeKey)
void limitLengthPerEntityValue(bool enabled)
An entity is taking to much space.
playlist.tracklist.track.album tag
void setMaxLookupSumPerEntityValue(int maxLookupSum)
An entity takes to many lookups in sum.
playlist.attribution.identifier tag
playlist.tracklist.track.creator tag
playlist.tracklist.track.tracknum tag
playlist.tracklist.track.meta tag
Element is not allowed at that place.
void setMaxLookupDepthPerEntityValue(int maxLookupDepth)
Given base URI is not a valid absolute URI.
int parseFile(XML_Char const *filename, XspfReaderCallback *callback, XML_Char const *baseUri)
playlist.attribution.location tag
Attribute not allowed at that place.
void setMaxLengthPerEntityValue(int maxLength)
playlist.tracklist.track.annotation tag
playlist.tracklist.track.duration tag
Element body has invalid format.
void limitLookupDepthPerEntityValue(bool enabled)
Attribute with invalid value.
XspfReader & operator=(XspfReader const &source)
int parseChunks(XspfChunkCallback *inputCallback, XspfReaderCallback *dataCallback, XML_Char const *baseUri)
Element occurs more often than allowed.
A key attribute holds a relative URI.
void limitLookupSumPerEntityValue(bool enabled)
playlist.tracklist.track.identifier tag
playlist.tracklist.track.title tag
Required element missing.
playlist.tracklist.track.location tag