http://swpat.ffii.org/Action against software patents http://www.gnome.org/Gnome2 Logo http://www.w3.org/StatusW3C Logo http://www.redhat.com/Red Hat Logo http://xmlsoft.org/Made with Libxml2 Logo 
Module relaxng from libxml2
API Menu ../index.htmlMain Menu ../docs.htmlDeveloper Menu ../examples/index.htmlCode Examples index.htmlAPI Menu libxml-parser.htmlParser API libxml-tree.htmlTree API libxml-xmlreader.htmlReader API ../guidelines.htmlXML Guidelines ../ChangeLog.htmlChangeLog API Indexes ../APIchunk0.htmlAlphabetic ../APIconstructors.htmlConstructors ../APIfunctions.htmlFunctions/Types ../APIfiles.htmlModules ../APIsymbols.htmlSymbols Related links http://mail.gnome.org/archives/xml/Mail archive http://xmlsoft.org/XSLT/XSLT libxslt http://phd.cs.unibo.it/gdome2/DOM gdome2 http://www.aleksey.com/xmlsec/XML-DSig xmlsec ftp://xmlsoft.org/FTP http://www.zlatkovic.com/projects/libxml/Windows binaries http://www.blastwave.org/packages.php/libxml2Solaris binaries http://www.explain.com.au/oss/libxml2xslt.htmlMacOsX binaries http://libxmlplusplus.sourceforge.net/C++ bindings http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4PHP bindings http://sourceforge.net/projects/libxml2-pas/Pascal bindings http://rubyforge.org/projects/xml-tools/Ruby bindings http://tclxml.sourceforge.net/Tcl bindings http://bugzilla.gnome.org/buglist.cgi?product=libxml2Bug Tracker libxml-pattern.htmlPrev libxml-pattern.htmlpattern index.htmlUp index.htmlAPI documentation ../index.htmlHome ../index.htmlThe XML C parser and toolkit of Gnome libxml-schemasInternals.htmlschemasInternals libxml-schemasInternals.htmlNext implementation of the Relax-NG validation 
Table of Contents
Structure #xmlRelaxNGxmlRelaxNG struct _xmlRelaxNG
The content of this structure is not made public by the API.
Structure #xmlRelaxNGParserCtxtxmlRelaxNGParserCtxt struct _xmlRelaxNGParserCtxt
The content of this structure is not made public by the API.
Typedef libxml-relaxng.html#xmlRelaxNGParserCtxtxmlRelaxNGParserCtxt  * xmlRelaxNGParserCtxtPtr Enum #xmlRelaxNGParserFlagxmlRelaxNGParserFlag Typedef libxml-relaxng.html#xmlRelaxNGxmlRelaxNG  * xmlRelaxNGPtr Structure #xmlRelaxNGValidCtxtxmlRelaxNGValidCtxt struct _xmlRelaxNGValidCtxt
The content of this structure is not made public by the API.
Typedef libxml-relaxng.html#xmlRelaxNGValidCtxtxmlRelaxNGValidCtxt  * xmlRelaxNGValidCtxtPtr Enum #xmlRelaxNGValidErrxmlRelaxNGValidErr void	#xmlRelaxNGCleanupTypesxmlRelaxNGCleanupTypes 		(void)void	#xmlRelaxNGDumpxmlRelaxNGDump 			(FILE * output, 					 libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)void	#xmlRelaxNGDumpTreexmlRelaxNGDumpTree 		(FILE * output, 					 libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)void	#xmlRelaxNGFreexmlRelaxNGFree 			( libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)void	#xmlRelaxNGFreeParserCtxtxmlRelaxNGFreeParserCtxt 	( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt)void	#xmlRelaxNGFreeValidCtxtxmlRelaxNGFreeValidCtxt 		( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt)int	#xmlRelaxNGGetParserErrorsxmlRelaxNGGetParserErrors 	( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  * err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  * warn, 					 void ** ctx)int	#xmlRelaxNGGetValidErrorsxmlRelaxNGGetValidErrors 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  * err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  * warn, 					 void ** ctx)int	#xmlRelaxNGInitTypesxmlRelaxNGInitTypes 		(void) libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr 	#xmlRelaxNGNewDocParserCtxtxmlRelaxNGNewDocParserCtxt 	( libxml-tree.html#xmlDocPtrxmlDocPtr  doc) libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr 	#xmlRelaxNGNewMemParserCtxtxmlRelaxNGNewMemParserCtxt 	(const char * buffer, 							 int size) libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr 	#xmlRelaxNGNewParserCtxtxmlRelaxNGNewParserCtxt 	(const char * URL) libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr 	#xmlRelaxNGNewValidCtxtxmlRelaxNGNewValidCtxt 	( libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema) libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr 	#xmlRelaxNGParsexmlRelaxNGParse 		( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt)void	#xmlRelaxNGSetParserErrorsxmlRelaxNGSetParserErrors 	( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  warn, 					 void * ctx)void	#xmlRelaxNGSetValidErrorsxmlRelaxNGSetValidErrors 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  warn, 					 void * ctx)void	#xmlRelaxNGSetValidStructuredErrorsxmlRelaxNGSetValidStructuredErrors 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 						 libxml-xmlerror.html#xmlStructuredErrorFuncxmlStructuredErrorFunc  serror, 						 void * ctx)int	#xmlRelaxNGValidateDocxmlRelaxNGValidateDoc 		( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc)int	#xmlRelaxNGValidateFullElementxmlRelaxNGValidateFullElement 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc, 					 libxml-tree.html#xmlNodePtrxmlNodePtr  elem)int	#xmlRelaxNGValidatePopElementxmlRelaxNGValidatePopElement 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc, 					 libxml-tree.html#xmlNodePtrxmlNodePtr  elem)int	#xmlRelaxNGValidatePushCDataxmlRelaxNGValidatePushCData 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 const libxml-xmlstring.html#xmlCharxmlChar  * data, 					 int len)int	#xmlRelaxNGValidatePushElementxmlRelaxNGValidatePushElement 	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc, 					 libxml-tree.html#xmlNodePtrxmlNodePtr  elem)Function type: #xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc void	
#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc 	(void * ctx, 					 const char * msg, 					 ... ...)
Function type: #xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc void	
#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc 	(void * ctx, 					 const char * msg, 					 ... ...)
int	#xmlRelaxParserSetFlagxmlRelaxParserSetFlag 		( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt, 					 int flags)Description
Structure xmlRelaxNG 
Structure xmlRelaxNGstruct _xmlRelaxNG {
The content of this structure is not made public by the API.
}
Structure xmlRelaxNGParserCtxt 
Structure xmlRelaxNGParserCtxtstruct _xmlRelaxNGParserCtxt {
The content of this structure is not made public by the API.
}
Enum xmlRelaxNGParserFlag 
Enum xmlRelaxNGParserFlag {
    
XML_RELAXNGP_NONE  = 0
    
XML_RELAXNGP_FREE_DOC  = 1
    
XML_RELAXNGP_CRNG  = 2
}
Structure xmlRelaxNGValidCtxt 
Structure xmlRelaxNGValidCtxtstruct _xmlRelaxNGValidCtxt {
The content of this structure is not made public by the API.
}
Enum xmlRelaxNGValidErr 
Enum xmlRelaxNGValidErr {
    
XML_RELAXNG_OK  = 0
    
XML_RELAXNG_ERR_MEMORY  = 1
    
XML_RELAXNG_ERR_TYPE  = 2
    
XML_RELAXNG_ERR_TYPEVAL  = 3
    
XML_RELAXNG_ERR_DUPID  = 4
    
XML_RELAXNG_ERR_TYPECMP  = 5
    
XML_RELAXNG_ERR_NOSTATE  = 6
    
XML_RELAXNG_ERR_NODEFINE  = 7
    
XML_RELAXNG_ERR_LISTEXTRA  = 8
    
XML_RELAXNG_ERR_LISTEMPTY  = 9
    
XML_RELAXNG_ERR_INTERNODATA  = 10
    
XML_RELAXNG_ERR_INTERSEQ  = 11
    
XML_RELAXNG_ERR_INTEREXTRA  = 12
    
XML_RELAXNG_ERR_ELEMNAME  = 13
    
XML_RELAXNG_ERR_ATTRNAME  = 14
    
XML_RELAXNG_ERR_ELEMNONS  = 15
    
XML_RELAXNG_ERR_ATTRNONS  = 16
    
XML_RELAXNG_ERR_ELEMWRONGNS  = 17
    
XML_RELAXNG_ERR_ATTRWRONGNS  = 18
    
XML_RELAXNG_ERR_ELEMEXTRANS  = 19
    
XML_RELAXNG_ERR_ATTREXTRANS  = 20
    
XML_RELAXNG_ERR_ELEMNOTEMPTY  = 21
    
XML_RELAXNG_ERR_NOELEM  = 22
    
XML_RELAXNG_ERR_NOTELEM  = 23
    
XML_RELAXNG_ERR_ATTRVALID  = 24
    
XML_RELAXNG_ERR_CONTENTVALID  = 25
    
XML_RELAXNG_ERR_EXTRACONTENT  = 26
    
XML_RELAXNG_ERR_INVALIDATTR  = 27
    
XML_RELAXNG_ERR_DATAELEM  = 28
    
XML_RELAXNG_ERR_VALELEM  = 29
    
XML_RELAXNG_ERR_LISTELEM  = 30
    
XML_RELAXNG_ERR_DATATYPE  = 31
    
XML_RELAXNG_ERR_VALUE  = 32
    
XML_RELAXNG_ERR_LIST  = 33
    
XML_RELAXNG_ERR_NOGRAMMAR  = 34
    
XML_RELAXNG_ERR_EXTRADATA  = 35
    
XML_RELAXNG_ERR_LACKDATA  = 36
    
XML_RELAXNG_ERR_INTERNAL  = 37
    
XML_RELAXNG_ERR_ELEMWRONG  = 38
    
XML_RELAXNG_ERR_TEXTWRONG  = 39
}
Function: xmlRelaxNGCleanupTypes
void	xmlRelaxNGCleanupTypes		(void)Cleanup the default Schemas type library associated to RelaxNG
Function: xmlRelaxNGDump
void	xmlRelaxNGDump			(FILE * output, 					 libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)Dump a RelaxNG structure back
output: the file output schema: a schema structure Function: xmlRelaxNGDumpTree
void	xmlRelaxNGDumpTree		(FILE * output, 					 libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)Dump the transformed RelaxNG tree.
output: the file output schema: a schema structure Function: xmlRelaxNGFree
void	xmlRelaxNGFree			( libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)Deallocate a RelaxNG structure.
schema: a schema structure Function: xmlRelaxNGFreeParserCtxt
void	xmlRelaxNGFreeParserCtxt	( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt)Free the resources associated to the schema parser context
ctxt: the schema parser context Function: xmlRelaxNGFreeValidCtxt
void	xmlRelaxNGFreeValidCtxt		( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt)Free the resources associated to the schema validation context
ctxt: the schema validation context Function: xmlRelaxNGGetParserErrors
int	xmlRelaxNGGetParserErrors	( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  * err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  * warn, 					 void ** ctx)Get the callback information used to handle errors for a validation context
ctxt: a Relax-NG validation context err: the error callback result warn: the warning callback result ctx: contextual data for the callbacks result Returns: -1 in case of failure, 0 otherwise. Function: xmlRelaxNGGetValidErrors
int	xmlRelaxNGGetValidErrors	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  * err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  * warn, 					 void ** ctx)Get the error and warning callback informations
ctxt: a Relax-NG validation context err: the error function result warn: the warning function result ctx: the functions context result Returns: -1 in case of error and 0 otherwise Function: xmlRelaxNGInitTypes
int	xmlRelaxNGInitTypes		(void)Initilize the default type libraries.
Returns: 0 in case of success and -1 in case of error. Function: xmlRelaxNGNewDocParserCtxt
libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr 	xmlRelaxNGNewDocParserCtxt	( libxml-tree.html#xmlDocPtrxmlDocPtr  doc)Create an XML RelaxNGs parser context for that document. Note: since the process of compiling a RelaxNG schemas modifies the document, the @doc parameter is duplicated internally.
doc: a preparsed document tree Returns: the parser context or NULL in case of error Function: xmlRelaxNGNewMemParserCtxt
libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr 	xmlRelaxNGNewMemParserCtxt	(const char * buffer, 							 int size)Create an XML RelaxNGs parse context for that memory buffer expected to contain an XML RelaxNGs file.
buffer: a pointer to a char array containing the schemas size: the size of the array Returns: the parser context or NULL in case of error Function: xmlRelaxNGNewParserCtxt
libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr 	xmlRelaxNGNewParserCtxt	(const char * URL)Create an XML RelaxNGs parse context for that file/resource expected to contain an XML RelaxNGs file.
URL: the location of the schema Returns: the parser context or NULL in case of error Function: xmlRelaxNGNewValidCtxt
libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr 	xmlRelaxNGNewValidCtxt	( libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr  schema)Create an XML RelaxNGs validation context based on the given schema
schema: a precompiled XML RelaxNGs Returns: the validation context or NULL in case of error Function: xmlRelaxNGParse
libxml-relaxng.html#xmlRelaxNGPtrxmlRelaxNGPtr 	xmlRelaxNGParse		( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt)parse a schema definition resource and build an internal XML Shema struture which can be used to validate instances.
ctxt: a Relax-NG parser context Returns: the internal XML RelaxNG structure built from the resource or NULL in case of error Function: xmlRelaxNGSetParserErrors
void	xmlRelaxNGSetParserErrors	( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  warn, 					 void * ctx)Set the callback functions used to handle errors for a validation context
ctxt: a Relax-NG validation context err: the error callback warn: the warning callback ctx: contextual data for the callbacks Function: xmlRelaxNGSetValidErrors
void	xmlRelaxNGSetValidErrors	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-relaxng.html#xmlRelaxNGValidityErrorFuncxmlRelaxNGValidityErrorFunc  err, 					 libxml-relaxng.html#xmlRelaxNGValidityWarningFuncxmlRelaxNGValidityWarningFunc  warn, 					 void * ctx)Set the error and warning callback informations
ctxt: a Relax-NG validation context err: the error function warn: the warning function ctx: the functions context Function: xmlRelaxNGSetValidStructuredErrors
void	xmlRelaxNGSetValidStructuredErrors	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 						 libxml-xmlerror.html#xmlStructuredErrorFuncxmlStructuredErrorFunc  serror, 						 void * ctx)Set the structured error callback
ctxt: a Relax-NG validation context serror: the structured error function ctx: the functions context Function: xmlRelaxNGValidateDoc
int	xmlRelaxNGValidateDoc		( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc)Validate a document tree in memory.
ctxt: a Relax-NG validation context doc: a parsed document tree Returns: 0 if the document is valid, a positive error code number otherwise and -1 in case of internal or API error. Function: xmlRelaxNGValidateFullElement
int	xmlRelaxNGValidateFullElement	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc, 					 libxml-tree.html#xmlNodePtrxmlNodePtr  elem)Validate a full subtree when xmlRelaxNGValidatePushElement() returned 0 and the content of the node has been expanded.
ctxt: the validation context doc: a document instance elem: an element instance Returns: 1 if no validation problem was found or -1 in case of error. Function: xmlRelaxNGValidatePopElement
int	xmlRelaxNGValidatePopElement	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc, 					 libxml-tree.html#xmlNodePtrxmlNodePtr  elem)Pop the element end from the RelaxNG validation stack.
ctxt: the RelaxNG validation context doc: a document instance elem: an element instance Returns: 1 if no validation problem was found or 0 otherwise Function: xmlRelaxNGValidatePushCData
int	xmlRelaxNGValidatePushCData	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 const libxml-xmlstring.html#xmlCharxmlChar  * data, 					 int len)check the CData parsed for validation in the current stack
ctxt: the RelaxNG validation context data: some character data read len: the lenght of the data Returns: 1 if no validation problem was found or -1 otherwise Function: xmlRelaxNGValidatePushElement
int	xmlRelaxNGValidatePushElement	( libxml-relaxng.html#xmlRelaxNGValidCtxtPtrxmlRelaxNGValidCtxtPtr  ctxt, 					 libxml-tree.html#xmlDocPtrxmlDocPtr  doc, 					 libxml-tree.html#xmlNodePtrxmlNodePtr  elem)Push a new element start on the RelaxNG validation stack.
ctxt: the validation context doc: a document instance elem: an element instance Returns: 1 if no validation problem was found or 0 if validating the element requires a full node, and -1 in case of error. Function type: xmlRelaxNGValidityErrorFunc
Function type: xmlRelaxNGValidityErrorFunc
void	xmlRelaxNGValidityErrorFunc	(void * ctx, 
					 const char * msg, 					 ... ...)
ctx: msg: ...: Function type: xmlRelaxNGValidityWarningFunc
Function type: xmlRelaxNGValidityWarningFunc
void	xmlRelaxNGValidityWarningFunc	(void * ctx, 
					 const char * msg, 					 ... ...)
ctx: msg: ...: Function: xmlRelaxParserSetFlag
int	xmlRelaxParserSetFlag		( libxml-relaxng.html#xmlRelaxNGParserCtxtPtrxmlRelaxNGParserCtxtPtr  ctxt, 					 int flags)Semi private function used to pass informations to a parser context which are a combination of libxml-relaxng.html#xmlRelaxNGParserFlagxmlRelaxNGParserFlag  .
ctxt: a RelaxNG parser context flags: a set of flags values Returns: 0 if success and -1 in case of error ../bugs.htmlDaniel Veillard 
