mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	closes bpo-38174: Update vendored expat library to 2.2.8. (GH-16346)
Fixes CVE-2019-15903. See full changelog at https://github.com/libexpat/libexpat/blob/R_2_2_8/expat/Changes.
This commit is contained in:
		
							parent
							
								
									49d99f01e6
								
							
						
					
					
						commit
						52b9408038
					
				
					 24 changed files with 3972 additions and 4841 deletions
				
			
		| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					Update vendorized expat library version to 2.2.8, which resolves
 | 
				
			||||||
 | 
					CVE-2019-15903.
 | 
				
			||||||
| 
						 | 
					@ -31,34 +31,34 @@
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
 | 
					    /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
 | 
				
			||||||
/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML,
 | 
					    /* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
 | 
					    /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
 | 
				
			||||||
/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
 | 
					    /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
 | 
				
			||||||
/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
 | 
					    /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
 | 
				
			||||||
/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
 | 
					    /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
 | 
				
			||||||
/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
					    /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
				
			||||||
/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
					    /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
				
			||||||
/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
 | 
					    /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
 | 
				
			||||||
/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
 | 
					    /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
 | 
				
			||||||
/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
					    /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
				
			||||||
/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
					    /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
				
			||||||
/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
 | 
					    /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
 | 
				
			||||||
/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
 | 
					    /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
 | 
				
			||||||
/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
					    /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
				
			||||||
/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
					    /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
				
			||||||
/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
					    /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
				
			||||||
/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,15 +33,6 @@
 | 
				
			||||||
#ifndef Expat_INCLUDED
 | 
					#ifndef Expat_INCLUDED
 | 
				
			||||||
#define Expat_INCLUDED 1
 | 
					#define Expat_INCLUDED 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __VMS
 | 
					 | 
				
			||||||
/*      0        1         2         3      0        1         2         3
 | 
					 | 
				
			||||||
        1234567890123456789012345678901     1234567890123456789012345678901 */
 | 
					 | 
				
			||||||
#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
 | 
					 | 
				
			||||||
#define XML_SetUnparsedEntityDeclHandler    XML_SetUnparsedEntDeclHandler
 | 
					 | 
				
			||||||
#define XML_SetStartNamespaceDeclHandler    XML_SetStartNamespcDeclHandler
 | 
					 | 
				
			||||||
#define XML_SetExternalEntityRefHandlerArg  XML_SetExternalEntRefHandlerArg
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include "expat_external.h"
 | 
					#include "expat_external.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,8 +44,8 @@ struct XML_ParserStruct;
 | 
				
			||||||
typedef struct XML_ParserStruct *XML_Parser;
 | 
					typedef struct XML_ParserStruct *XML_Parser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef unsigned char XML_Bool;
 | 
					typedef unsigned char XML_Bool;
 | 
				
			||||||
#define XML_TRUE   ((XML_Bool) 1)
 | 
					#define XML_TRUE ((XML_Bool)1)
 | 
				
			||||||
#define XML_FALSE  ((XML_Bool) 0)
 | 
					#define XML_FALSE ((XML_Bool)0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The XML_Status enum gives the possible return values for several
 | 
					/* The XML_Status enum gives the possible return values for several
 | 
				
			||||||
   API functions.  The preprocessor #defines are included so this
 | 
					   API functions.  The preprocessor #defines are included so this
 | 
				
			||||||
| 
						 | 
					@ -164,25 +155,23 @@ enum XML_Content_Quant {
 | 
				
			||||||
typedef struct XML_cp XML_Content;
 | 
					typedef struct XML_cp XML_Content;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct XML_cp {
 | 
					struct XML_cp {
 | 
				
			||||||
  enum XML_Content_Type         type;
 | 
					  enum XML_Content_Type type;
 | 
				
			||||||
  enum XML_Content_Quant        quant;
 | 
					  enum XML_Content_Quant quant;
 | 
				
			||||||
  XML_Char *                    name;
 | 
					  XML_Char *name;
 | 
				
			||||||
  unsigned int                  numchildren;
 | 
					  unsigned int numchildren;
 | 
				
			||||||
  XML_Content *                 children;
 | 
					  XML_Content *children;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* This is called for an element declaration. See above for
 | 
					/* This is called for an element declaration. See above for
 | 
				
			||||||
   description of the model argument. It's the caller's responsibility
 | 
					   description of the model argument. It's the caller's responsibility
 | 
				
			||||||
   to free model when finished with it.
 | 
					   to free model when finished with it.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
 | 
					typedef void(XMLCALL *XML_ElementDeclHandler)(void *userData,
 | 
				
			||||||
                                                const XML_Char *name,
 | 
					                                              const XML_Char *name,
 | 
				
			||||||
                                                XML_Content *model);
 | 
					                                              XML_Content *model);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetElementDeclHandler(XML_Parser parser,
 | 
					XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl);
 | 
				
			||||||
                          XML_ElementDeclHandler eldecl);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The Attlist declaration handler is called for *each* attribute. So
 | 
					/* The Attlist declaration handler is called for *each* attribute. So
 | 
				
			||||||
   a single Attlist declaration with multiple attributes declared will
 | 
					   a single Attlist declaration with multiple attributes declared will
 | 
				
			||||||
| 
						 | 
					@ -192,17 +181,12 @@ XML_SetElementDeclHandler(XML_Parser parser,
 | 
				
			||||||
   value will be NULL in the case of "#REQUIRED". If "isrequired" is
 | 
					   value will be NULL in the case of "#REQUIRED". If "isrequired" is
 | 
				
			||||||
   true and default is non-NULL, then this is a "#FIXED" default.
 | 
					   true and default is non-NULL, then this is a "#FIXED" default.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_AttlistDeclHandler) (
 | 
					typedef void(XMLCALL *XML_AttlistDeclHandler)(
 | 
				
			||||||
                                    void            *userData,
 | 
					    void *userData, const XML_Char *elname, const XML_Char *attname,
 | 
				
			||||||
                                    const XML_Char  *elname,
 | 
					    const XML_Char *att_type, const XML_Char *dflt, int isrequired);
 | 
				
			||||||
                                    const XML_Char  *attname,
 | 
					 | 
				
			||||||
                                    const XML_Char  *att_type,
 | 
					 | 
				
			||||||
                                    const XML_Char  *dflt,
 | 
					 | 
				
			||||||
                                    int              isrequired);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetAttlistDeclHandler(XML_Parser parser,
 | 
					XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl);
 | 
				
			||||||
                          XML_AttlistDeclHandler attdecl);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The XML declaration handler is called for *both* XML declarations
 | 
					/* The XML declaration handler is called for *both* XML declarations
 | 
				
			||||||
   and text declarations. The way to distinguish is that the version
 | 
					   and text declarations. The way to distinguish is that the version
 | 
				
			||||||
| 
						 | 
					@ -212,15 +196,13 @@ XML_SetAttlistDeclHandler(XML_Parser parser,
 | 
				
			||||||
   was no standalone parameter in the declaration, that it was given
 | 
					   was no standalone parameter in the declaration, that it was given
 | 
				
			||||||
   as no, or that it was given as yes.
 | 
					   as no, or that it was given as yes.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_XmlDeclHandler) (void           *userData,
 | 
					typedef void(XMLCALL *XML_XmlDeclHandler)(void *userData,
 | 
				
			||||||
                                            const XML_Char *version,
 | 
					                                          const XML_Char *version,
 | 
				
			||||||
                                            const XML_Char *encoding,
 | 
					                                          const XML_Char *encoding,
 | 
				
			||||||
                                            int             standalone);
 | 
					                                          int standalone);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetXmlDeclHandler(XML_Parser parser,
 | 
					XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl);
 | 
				
			||||||
                      XML_XmlDeclHandler xmldecl);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  void *(*malloc_fcn)(size_t size);
 | 
					  void *(*malloc_fcn)(size_t size);
 | 
				
			||||||
| 
						 | 
					@ -248,7 +230,6 @@ XML_ParserCreate(const XML_Char *encoding);
 | 
				
			||||||
XMLPARSEAPI(XML_Parser)
 | 
					XMLPARSEAPI(XML_Parser)
 | 
				
			||||||
XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
 | 
					XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Constructs a new parser using the memory management suite referred to
 | 
					/* Constructs a new parser using the memory management suite referred to
 | 
				
			||||||
   by memsuite. If memsuite is NULL, then use the standard library memory
 | 
					   by memsuite. If memsuite is NULL, then use the standard library memory
 | 
				
			||||||
   suite. If namespaceSeparator is non-NULL it creates a parser with
 | 
					   suite. If namespaceSeparator is non-NULL it creates a parser with
 | 
				
			||||||
| 
						 | 
					@ -265,7 +246,7 @@ XML_ParserCreate_MM(const XML_Char *encoding,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Prepare a parser object to be re-used.  This is particularly
 | 
					/* Prepare a parser object to be re-used.  This is particularly
 | 
				
			||||||
   valuable when memory allocation overhead is disproportionately high,
 | 
					   valuable when memory allocation overhead is disproportionately high,
 | 
				
			||||||
   such as when a large number of small documents need to be parsed.
 | 
					   such as when a large number of small documnents need to be parsed.
 | 
				
			||||||
   All handlers are cleared from the parser, except for the
 | 
					   All handlers are cleared from the parser, except for the
 | 
				
			||||||
   unknownEncodingHandler. The parser's external state is re-initialized
 | 
					   unknownEncodingHandler. The parser's external state is re-initialized
 | 
				
			||||||
   except for the values of ns and ns_triplets.
 | 
					   except for the values of ns and ns_triplets.
 | 
				
			||||||
| 
						 | 
					@ -278,31 +259,27 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
 | 
				
			||||||
/* atts is array of name/value pairs, terminated by 0;
 | 
					/* atts is array of name/value pairs, terminated by 0;
 | 
				
			||||||
   names and values are 0 terminated.
 | 
					   names and values are 0 terminated.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
 | 
					typedef void(XMLCALL *XML_StartElementHandler)(void *userData,
 | 
				
			||||||
                                                 const XML_Char *name,
 | 
					                                               const XML_Char *name,
 | 
				
			||||||
                                                 const XML_Char **atts);
 | 
					                                               const XML_Char **atts);
 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef void (XMLCALL *XML_EndElementHandler) (void *userData,
 | 
					 | 
				
			||||||
                                               const XML_Char *name);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef void(XMLCALL *XML_EndElementHandler)(void *userData,
 | 
				
			||||||
 | 
					                                             const XML_Char *name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* s is not 0 terminated. */
 | 
					/* s is not 0 terminated. */
 | 
				
			||||||
typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
 | 
					typedef void(XMLCALL *XML_CharacterDataHandler)(void *userData,
 | 
				
			||||||
                                                  const XML_Char *s,
 | 
					                                                const XML_Char *s, int len);
 | 
				
			||||||
                                                  int len);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* target and data are 0 terminated */
 | 
					/* target and data are 0 terminated */
 | 
				
			||||||
typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
 | 
					typedef void(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
 | 
				
			||||||
                                                void *userData,
 | 
					                                                        const XML_Char *target,
 | 
				
			||||||
                                                const XML_Char *target,
 | 
					                                                        const XML_Char *data);
 | 
				
			||||||
                                                const XML_Char *data);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* data is 0 terminated */
 | 
					/* data is 0 terminated */
 | 
				
			||||||
typedef void (XMLCALL *XML_CommentHandler) (void *userData,
 | 
					typedef void(XMLCALL *XML_CommentHandler)(void *userData, const XML_Char *data);
 | 
				
			||||||
                                            const XML_Char *data);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
 | 
					typedef void(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
 | 
				
			||||||
typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
 | 
					typedef void(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for any characters in the XML document for which
 | 
					/* This is called for any characters in the XML document for which
 | 
				
			||||||
   there is no applicable handler.  This includes both characters that
 | 
					   there is no applicable handler.  This includes both characters that
 | 
				
			||||||
| 
						 | 
					@ -317,25 +294,23 @@ typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
 | 
				
			||||||
   default handler: for example, a comment might be split between
 | 
					   default handler: for example, a comment might be split between
 | 
				
			||||||
   multiple calls.
 | 
					   multiple calls.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
 | 
					typedef void(XMLCALL *XML_DefaultHandler)(void *userData, const XML_Char *s,
 | 
				
			||||||
                                            const XML_Char *s,
 | 
					                                          int len);
 | 
				
			||||||
                                            int len);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for the start of the DOCTYPE declaration, before
 | 
					/* This is called for the start of the DOCTYPE declaration, before
 | 
				
			||||||
   any DTD or internal subset is parsed.
 | 
					   any DTD or internal subset is parsed.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
 | 
					typedef void(XMLCALL *XML_StartDoctypeDeclHandler)(void *userData,
 | 
				
			||||||
                                            void *userData,
 | 
					                                                   const XML_Char *doctypeName,
 | 
				
			||||||
                                            const XML_Char *doctypeName,
 | 
					                                                   const XML_Char *sysid,
 | 
				
			||||||
                                            const XML_Char *sysid,
 | 
					                                                   const XML_Char *pubid,
 | 
				
			||||||
                                            const XML_Char *pubid,
 | 
					                                                   int has_internal_subset);
 | 
				
			||||||
                                            int has_internal_subset);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for the start of the DOCTYPE declaration when the
 | 
					/* This is called for the start of the DOCTYPE declaration when the
 | 
				
			||||||
   closing > is encountered, but after processing any external
 | 
					   closing > is encountered, but after processing any external
 | 
				
			||||||
   subset.
 | 
					   subset.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
 | 
					typedef void(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for entity declarations. The is_parameter_entity
 | 
					/* This is called for entity declarations. The is_parameter_entity
 | 
				
			||||||
   argument will be non-zero if the entity is a parameter entity, zero
 | 
					   argument will be non-zero if the entity is a parameter entity, zero
 | 
				
			||||||
| 
						 | 
					@ -355,20 +330,14 @@ typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
 | 
				
			||||||
   Note that is_parameter_entity can't be changed to XML_Bool, since
 | 
					   Note that is_parameter_entity can't be changed to XML_Bool, since
 | 
				
			||||||
   that would break binary compatibility.
 | 
					   that would break binary compatibility.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_EntityDeclHandler) (
 | 
					typedef void(XMLCALL *XML_EntityDeclHandler)(
 | 
				
			||||||
                              void *userData,
 | 
					    void *userData, const XML_Char *entityName, int is_parameter_entity,
 | 
				
			||||||
                              const XML_Char *entityName,
 | 
					    const XML_Char *value, int value_length, const XML_Char *base,
 | 
				
			||||||
                              int is_parameter_entity,
 | 
					    const XML_Char *systemId, const XML_Char *publicId,
 | 
				
			||||||
                              const XML_Char *value,
 | 
					    const XML_Char *notationName);
 | 
				
			||||||
                              int value_length,
 | 
					 | 
				
			||||||
                              const XML_Char *base,
 | 
					 | 
				
			||||||
                              const XML_Char *systemId,
 | 
					 | 
				
			||||||
                              const XML_Char *publicId,
 | 
					 | 
				
			||||||
                              const XML_Char *notationName);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetEntityDeclHandler(XML_Parser parser,
 | 
					XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler);
 | 
				
			||||||
                         XML_EntityDeclHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* OBSOLETE -- OBSOLETE -- OBSOLETE
 | 
					/* OBSOLETE -- OBSOLETE -- OBSOLETE
 | 
				
			||||||
   This handler has been superseded by the EntityDeclHandler above.
 | 
					   This handler has been superseded by the EntityDeclHandler above.
 | 
				
			||||||
| 
						 | 
					@ -379,24 +348,20 @@ XML_SetEntityDeclHandler(XML_Parser parser,
 | 
				
			||||||
   entityName, systemId and notationName arguments will never be
 | 
					   entityName, systemId and notationName arguments will never be
 | 
				
			||||||
   NULL. The other arguments may be.
 | 
					   NULL. The other arguments may be.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
 | 
					typedef void(XMLCALL *XML_UnparsedEntityDeclHandler)(
 | 
				
			||||||
                                    void *userData,
 | 
					    void *userData, const XML_Char *entityName, const XML_Char *base,
 | 
				
			||||||
                                    const XML_Char *entityName,
 | 
					    const XML_Char *systemId, const XML_Char *publicId,
 | 
				
			||||||
                                    const XML_Char *base,
 | 
					    const XML_Char *notationName);
 | 
				
			||||||
                                    const XML_Char *systemId,
 | 
					 | 
				
			||||||
                                    const XML_Char *publicId,
 | 
					 | 
				
			||||||
                                    const XML_Char *notationName);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for a declaration of notation.  The base argument is
 | 
					/* This is called for a declaration of notation.  The base argument is
 | 
				
			||||||
   whatever was set by XML_SetBase. The notationName will never be
 | 
					   whatever was set by XML_SetBase. The notationName will never be
 | 
				
			||||||
   NULL.  The other arguments can be.
 | 
					   NULL.  The other arguments can be.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_NotationDeclHandler) (
 | 
					typedef void(XMLCALL *XML_NotationDeclHandler)(void *userData,
 | 
				
			||||||
                                    void *userData,
 | 
					                                               const XML_Char *notationName,
 | 
				
			||||||
                                    const XML_Char *notationName,
 | 
					                                               const XML_Char *base,
 | 
				
			||||||
                                    const XML_Char *base,
 | 
					                                               const XML_Char *systemId,
 | 
				
			||||||
                                    const XML_Char *systemId,
 | 
					                                               const XML_Char *publicId);
 | 
				
			||||||
                                    const XML_Char *publicId);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* When namespace processing is enabled, these are called once for
 | 
					/* When namespace processing is enabled, these are called once for
 | 
				
			||||||
   each namespace declaration. The call to the start and end element
 | 
					   each namespace declaration. The call to the start and end element
 | 
				
			||||||
| 
						 | 
					@ -404,14 +369,12 @@ typedef void (XMLCALL *XML_NotationDeclHandler) (
 | 
				
			||||||
   declaration handlers. For an xmlns attribute, prefix will be
 | 
					   declaration handlers. For an xmlns attribute, prefix will be
 | 
				
			||||||
   NULL.  For an xmlns="" attribute, uri will be NULL.
 | 
					   NULL.  For an xmlns="" attribute, uri will be NULL.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
 | 
					typedef void(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
 | 
				
			||||||
                                    void *userData,
 | 
					                                                     const XML_Char *prefix,
 | 
				
			||||||
                                    const XML_Char *prefix,
 | 
					                                                     const XML_Char *uri);
 | 
				
			||||||
                                    const XML_Char *uri);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
 | 
					typedef void(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
 | 
				
			||||||
                                    void *userData,
 | 
					                                                   const XML_Char *prefix);
 | 
				
			||||||
                                    const XML_Char *prefix);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called if the document is not standalone, that is, it has an
 | 
					/* This is called if the document is not standalone, that is, it has an
 | 
				
			||||||
   external subset or a reference to a parameter entity, but does not
 | 
					   external subset or a reference to a parameter entity, but does not
 | 
				
			||||||
| 
						 | 
					@ -422,7 +385,7 @@ typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
 | 
				
			||||||
   conditions above this handler will only be called if the referenced
 | 
					   conditions above this handler will only be called if the referenced
 | 
				
			||||||
   entity was actually read.
 | 
					   entity was actually read.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
 | 
					typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for a reference to an external parsed general
 | 
					/* This is called for a reference to an external parsed general
 | 
				
			||||||
   entity.  The referenced entity is not automatically parsed.  The
 | 
					   entity.  The referenced entity is not automatically parsed.  The
 | 
				
			||||||
| 
						 | 
					@ -458,12 +421,11 @@ typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
 | 
				
			||||||
   Note that unlike other handlers the first argument is the parser,
 | 
					   Note that unlike other handlers the first argument is the parser,
 | 
				
			||||||
   not userData.
 | 
					   not userData.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
 | 
					typedef int(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser parser,
 | 
				
			||||||
                                    XML_Parser parser,
 | 
					                                                   const XML_Char *context,
 | 
				
			||||||
                                    const XML_Char *context,
 | 
					                                                   const XML_Char *base,
 | 
				
			||||||
                                    const XML_Char *base,
 | 
					                                                   const XML_Char *systemId,
 | 
				
			||||||
                                    const XML_Char *systemId,
 | 
					                                                   const XML_Char *publicId);
 | 
				
			||||||
                                    const XML_Char *publicId);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called in two situations:
 | 
					/* This is called in two situations:
 | 
				
			||||||
   1) An entity reference is encountered for which no declaration
 | 
					   1) An entity reference is encountered for which no declaration
 | 
				
			||||||
| 
						 | 
					@ -475,10 +437,9 @@ typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
 | 
				
			||||||
         the event would be out of sync with the reporting of the
 | 
					         the event would be out of sync with the reporting of the
 | 
				
			||||||
         declarations or attribute values
 | 
					         declarations or attribute values
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef void (XMLCALL *XML_SkippedEntityHandler) (
 | 
					typedef void(XMLCALL *XML_SkippedEntityHandler)(void *userData,
 | 
				
			||||||
                                    void *userData,
 | 
					                                                const XML_Char *entityName,
 | 
				
			||||||
                                    const XML_Char *entityName,
 | 
					                                                int is_parameter_entity);
 | 
				
			||||||
                                    int is_parameter_entity);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This structure is filled in by the XML_UnknownEncodingHandler to
 | 
					/* This structure is filled in by the XML_UnknownEncodingHandler to
 | 
				
			||||||
   provide information to the parser about encodings that are unknown
 | 
					   provide information to the parser about encodings that are unknown
 | 
				
			||||||
| 
						 | 
					@ -535,8 +496,8 @@ typedef void (XMLCALL *XML_SkippedEntityHandler) (
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  int map[256];
 | 
					  int map[256];
 | 
				
			||||||
  void *data;
 | 
					  void *data;
 | 
				
			||||||
  int (XMLCALL *convert)(void *data, const char *s);
 | 
					  int(XMLCALL *convert)(void *data, const char *s);
 | 
				
			||||||
  void (XMLCALL *release)(void *data);
 | 
					  void(XMLCALL *release)(void *data);
 | 
				
			||||||
} XML_Encoding;
 | 
					} XML_Encoding;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is called for an encoding that is unknown to the parser.
 | 
					/* This is called for an encoding that is unknown to the parser.
 | 
				
			||||||
| 
						 | 
					@ -554,23 +515,19 @@ typedef struct {
 | 
				
			||||||
   If info does not describe a suitable encoding, then the parser will
 | 
					   If info does not describe a suitable encoding, then the parser will
 | 
				
			||||||
   return an XML_UNKNOWN_ENCODING error.
 | 
					   return an XML_UNKNOWN_ENCODING error.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef int (XMLCALL *XML_UnknownEncodingHandler) (
 | 
					typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
 | 
				
			||||||
                                    void *encodingHandlerData,
 | 
					                                                 const XML_Char *name,
 | 
				
			||||||
                                    const XML_Char *name,
 | 
					                                                 XML_Encoding *info);
 | 
				
			||||||
                                    XML_Encoding *info);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetElementHandler(XML_Parser parser,
 | 
					XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start,
 | 
				
			||||||
                      XML_StartElementHandler start,
 | 
					 | 
				
			||||||
                      XML_EndElementHandler end);
 | 
					                      XML_EndElementHandler end);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetStartElementHandler(XML_Parser parser,
 | 
					XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler);
 | 
				
			||||||
                           XML_StartElementHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetEndElementHandler(XML_Parser parser,
 | 
					XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler);
 | 
				
			||||||
                         XML_EndElementHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetCharacterDataHandler(XML_Parser parser,
 | 
					XML_SetCharacterDataHandler(XML_Parser parser,
 | 
				
			||||||
| 
						 | 
					@ -580,8 +537,7 @@ XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetProcessingInstructionHandler(XML_Parser parser,
 | 
					XML_SetProcessingInstructionHandler(XML_Parser parser,
 | 
				
			||||||
                                    XML_ProcessingInstructionHandler handler);
 | 
					                                    XML_ProcessingInstructionHandler handler);
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetCommentHandler(XML_Parser parser,
 | 
					XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler);
 | 
				
			||||||
                      XML_CommentHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetCdataSectionHandler(XML_Parser parser,
 | 
					XML_SetCdataSectionHandler(XML_Parser parser,
 | 
				
			||||||
| 
						 | 
					@ -601,20 +557,17 @@ XML_SetEndCdataSectionHandler(XML_Parser parser,
 | 
				
			||||||
   default handler, or to the skipped entity handler, if one is set.
 | 
					   default handler, or to the skipped entity handler, if one is set.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetDefaultHandler(XML_Parser parser,
 | 
					XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler);
 | 
				
			||||||
                      XML_DefaultHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This sets the default handler but does not inhibit expansion of
 | 
					/* This sets the default handler but does not inhibit expansion of
 | 
				
			||||||
   internal entities.  The entity reference will not be passed to the
 | 
					   internal entities.  The entity reference will not be passed to the
 | 
				
			||||||
   default handler.
 | 
					   default handler.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetDefaultHandlerExpand(XML_Parser parser,
 | 
					XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler);
 | 
				
			||||||
                            XML_DefaultHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetDoctypeDeclHandler(XML_Parser parser,
 | 
					XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start,
 | 
				
			||||||
                          XML_StartDoctypeDeclHandler start,
 | 
					 | 
				
			||||||
                          XML_EndDoctypeDeclHandler end);
 | 
					                          XML_EndDoctypeDeclHandler end);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
| 
						 | 
					@ -622,16 +575,14 @@ XML_SetStartDoctypeDeclHandler(XML_Parser parser,
 | 
				
			||||||
                               XML_StartDoctypeDeclHandler start);
 | 
					                               XML_StartDoctypeDeclHandler start);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetEndDoctypeDeclHandler(XML_Parser parser,
 | 
					XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end);
 | 
				
			||||||
                             XML_EndDoctypeDeclHandler end);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
 | 
					XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
 | 
				
			||||||
                                 XML_UnparsedEntityDeclHandler handler);
 | 
					                                 XML_UnparsedEntityDeclHandler handler);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetNotationDeclHandler(XML_Parser parser,
 | 
					XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler);
 | 
				
			||||||
                           XML_NotationDeclHandler handler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetNamespaceDeclHandler(XML_Parser parser,
 | 
					XML_SetNamespaceDeclHandler(XML_Parser parser,
 | 
				
			||||||
| 
						 | 
					@ -659,8 +610,7 @@ XML_SetExternalEntityRefHandler(XML_Parser parser,
 | 
				
			||||||
   instead of the parser object.
 | 
					   instead of the parser object.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
 | 
					XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg);
 | 
				
			||||||
                                   void *arg);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
XML_SetSkippedEntityHandler(XML_Parser parser,
 | 
					XML_SetSkippedEntityHandler(XML_Parser parser,
 | 
				
			||||||
| 
						 | 
					@ -740,7 +690,6 @@ XML_UseParserAsHandlerArg(XML_Parser parser);
 | 
				
			||||||
XMLPARSEAPI(enum XML_Error)
 | 
					XMLPARSEAPI(enum XML_Error)
 | 
				
			||||||
XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
 | 
					XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Sets the base to be used for resolving relative URIs in system
 | 
					/* Sets the base to be used for resolving relative URIs in system
 | 
				
			||||||
   identifiers in declarations.  Resolving relative identifiers is
 | 
					   identifiers in declarations.  Resolving relative identifiers is
 | 
				
			||||||
   left to the application: this value will be passed through as the
 | 
					   left to the application: this value will be passed through as the
 | 
				
			||||||
| 
						 | 
					@ -780,10 +729,10 @@ XML_GetIdAttributeIndex(XML_Parser parser);
 | 
				
			||||||
   info->valueEnd - info->valueStart = 4 bytes.
 | 
					   info->valueEnd - info->valueStart = 4 bytes.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
 | 
					  XML_Index nameStart;  /* Offset to beginning of the attribute name. */
 | 
				
			||||||
  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
 | 
					  XML_Index nameEnd;    /* Offset after the attribute name's last byte. */
 | 
				
			||||||
  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
 | 
					  XML_Index valueStart; /* Offset to beginning of the attribute value. */
 | 
				
			||||||
  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
 | 
					  XML_Index valueEnd;   /* Offset after the attribute value's last byte. */
 | 
				
			||||||
} XML_AttrInfo;
 | 
					} XML_AttrInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Returns an array of XML_AttrInfo structures for the attribute/value pairs
 | 
					/* Returns an array of XML_AttrInfo structures for the attribute/value pairs
 | 
				
			||||||
| 
						 | 
					@ -819,20 +768,20 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
 | 
				
			||||||
   (resumable = 0) an already suspended parser. Some call-backs may
 | 
					   (resumable = 0) an already suspended parser. Some call-backs may
 | 
				
			||||||
   still follow because they would otherwise get lost. Examples:
 | 
					   still follow because they would otherwise get lost. Examples:
 | 
				
			||||||
   - endElementHandler() for empty elements when stopped in
 | 
					   - endElementHandler() for empty elements when stopped in
 | 
				
			||||||
     startElementHandler(), 
 | 
					     startElementHandler(),
 | 
				
			||||||
   - endNameSpaceDeclHandler() when stopped in endElementHandler(), 
 | 
					   - endNameSpaceDeclHandler() when stopped in endElementHandler(),
 | 
				
			||||||
   and possibly others.
 | 
					   and possibly others.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Can be called from most handlers, including DTD related call-backs,
 | 
					   Can be called from most handlers, including DTD related call-backs,
 | 
				
			||||||
   except when parsing an external parameter entity and resumable != 0.
 | 
					   except when parsing an external parameter entity and resumable != 0.
 | 
				
			||||||
   Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
 | 
					   Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
 | 
				
			||||||
   Possible error codes: 
 | 
					   Possible error codes:
 | 
				
			||||||
   - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
 | 
					   - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
 | 
				
			||||||
   - XML_ERROR_FINISHED: when the parser has already finished.
 | 
					   - XML_ERROR_FINISHED: when the parser has already finished.
 | 
				
			||||||
   - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
 | 
					   - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   When resumable != 0 (true) then parsing is suspended, that is, 
 | 
					   When resumable != 0 (true) then parsing is suspended, that is,
 | 
				
			||||||
   XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. 
 | 
					   XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED.
 | 
				
			||||||
   Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
 | 
					   Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
 | 
				
			||||||
   return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
 | 
					   return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -843,7 +792,7 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
 | 
				
			||||||
   the externalEntityRefHandler() to call XML_StopParser() on the parent
 | 
					   the externalEntityRefHandler() to call XML_StopParser() on the parent
 | 
				
			||||||
   parser (recursively), if one wants to stop parsing altogether.
 | 
					   parser (recursively), if one wants to stop parsing altogether.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   When suspended, parsing can be resumed by calling XML_ResumeParser(). 
 | 
					   When suspended, parsing can be resumed by calling XML_ResumeParser().
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(enum XML_Status)
 | 
					XMLPARSEAPI(enum XML_Status)
 | 
				
			||||||
XML_StopParser(XML_Parser parser, XML_Bool resumable);
 | 
					XML_StopParser(XML_Parser parser, XML_Bool resumable);
 | 
				
			||||||
| 
						 | 
					@ -851,7 +800,7 @@ XML_StopParser(XML_Parser parser, XML_Bool resumable);
 | 
				
			||||||
/* Resumes parsing after it has been suspended with XML_StopParser().
 | 
					/* Resumes parsing after it has been suspended with XML_StopParser().
 | 
				
			||||||
   Must not be called from within a handler call-back. Returns same
 | 
					   Must not be called from within a handler call-back. Returns same
 | 
				
			||||||
   status codes as XML_Parse() or XML_ParseBuffer().
 | 
					   status codes as XML_Parse() or XML_ParseBuffer().
 | 
				
			||||||
   Additional error code XML_ERROR_NOT_SUSPENDED possible.   
 | 
					   Additional error code XML_ERROR_NOT_SUSPENDED possible.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   *Note*:
 | 
					   *Note*:
 | 
				
			||||||
   This must be called on the most deeply nested child parser instance
 | 
					   This must be called on the most deeply nested child parser instance
 | 
				
			||||||
| 
						 | 
					@ -863,12 +812,7 @@ XML_StopParser(XML_Parser parser, XML_Bool resumable);
 | 
				
			||||||
XMLPARSEAPI(enum XML_Status)
 | 
					XMLPARSEAPI(enum XML_Status)
 | 
				
			||||||
XML_ResumeParser(XML_Parser parser);
 | 
					XML_ResumeParser(XML_Parser parser);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum XML_Parsing {
 | 
					enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED };
 | 
				
			||||||
  XML_INITIALIZED,
 | 
					 | 
				
			||||||
  XML_PARSING,
 | 
					 | 
				
			||||||
  XML_FINISHED,
 | 
					 | 
				
			||||||
  XML_SUSPENDED
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  enum XML_Parsing parsing;
 | 
					  enum XML_Parsing parsing;
 | 
				
			||||||
| 
						 | 
					@ -900,8 +844,7 @@ XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
 | 
				
			||||||
   Otherwise returns a new XML_Parser object.
 | 
					   Otherwise returns a new XML_Parser object.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(XML_Parser)
 | 
					XMLPARSEAPI(XML_Parser)
 | 
				
			||||||
XML_ExternalEntityParserCreate(XML_Parser parser,
 | 
					XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context,
 | 
				
			||||||
                               const XML_Char *context,
 | 
					 | 
				
			||||||
                               const XML_Char *encoding);
 | 
					                               const XML_Char *encoding);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum XML_ParamEntityParsing {
 | 
					enum XML_ParamEntityParsing {
 | 
				
			||||||
| 
						 | 
					@ -945,8 +888,7 @@ XML_SetParamEntityParsing(XML_Parser parser,
 | 
				
			||||||
   Note: If parser == NULL, the function will do nothing and return 0.
 | 
					   Note: If parser == NULL, the function will do nothing and return 0.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(int)
 | 
					XMLPARSEAPI(int)
 | 
				
			||||||
XML_SetHashSalt(XML_Parser parser,
 | 
					XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt);
 | 
				
			||||||
                unsigned long hash_salt);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
 | 
					/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
 | 
				
			||||||
   XML_GetErrorCode returns information about the error.
 | 
					   XML_GetErrorCode returns information about the error.
 | 
				
			||||||
| 
						 | 
					@ -963,7 +905,7 @@ XML_GetErrorCode(XML_Parser parser);
 | 
				
			||||||
   be within the relevant markup.  When called outside of the callback
 | 
					   be within the relevant markup.  When called outside of the callback
 | 
				
			||||||
   functions, the position indicated will be just past the last parse
 | 
					   functions, the position indicated will be just past the last parse
 | 
				
			||||||
   event (regardless of whether there was an associated callback).
 | 
					   event (regardless of whether there was an associated callback).
 | 
				
			||||||
   
 | 
					
 | 
				
			||||||
   They may also be called after returning from a call to XML_Parse
 | 
					   They may also be called after returning from a call to XML_Parse
 | 
				
			||||||
   or XML_ParseBuffer.  If the return value is XML_STATUS_ERROR then
 | 
					   or XML_ParseBuffer.  If the return value is XML_STATUS_ERROR then
 | 
				
			||||||
   the location is the location of the character at which the error
 | 
					   the location is the location of the character at which the error
 | 
				
			||||||
| 
						 | 
					@ -995,14 +937,12 @@ XML_GetCurrentByteCount(XML_Parser parser);
 | 
				
			||||||
   the handler that makes the call.
 | 
					   the handler that makes the call.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
XMLPARSEAPI(const char *)
 | 
					XMLPARSEAPI(const char *)
 | 
				
			||||||
XML_GetInputContext(XML_Parser parser,
 | 
					XML_GetInputContext(XML_Parser parser, int *offset, int *size);
 | 
				
			||||||
                    int *offset,
 | 
					 | 
				
			||||||
                    int *size);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* For backwards compatibility with previous versions. */
 | 
					/* For backwards compatibility with previous versions. */
 | 
				
			||||||
#define XML_GetErrorLineNumber   XML_GetCurrentLineNumber
 | 
					#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
 | 
				
			||||||
#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
 | 
					#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
 | 
				
			||||||
#define XML_GetErrorByteIndex    XML_GetCurrentByteIndex
 | 
					#define XML_GetErrorByteIndex XML_GetCurrentByteIndex
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Frees the content model passed to the element declaration handler */
 | 
					/* Frees the content model passed to the element declaration handler */
 | 
				
			||||||
XMLPARSEAPI(void)
 | 
					XMLPARSEAPI(void)
 | 
				
			||||||
| 
						 | 
					@ -1062,21 +1002,20 @@ enum XML_FeatureEnum {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
  enum XML_FeatureEnum  feature;
 | 
					  enum XML_FeatureEnum feature;
 | 
				
			||||||
  const XML_LChar       *name;
 | 
					  const XML_LChar *name;
 | 
				
			||||||
  long int              value;
 | 
					  long int value;
 | 
				
			||||||
} XML_Feature;
 | 
					} XML_Feature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
XMLPARSEAPI(const XML_Feature *)
 | 
					XMLPARSEAPI(const XML_Feature *)
 | 
				
			||||||
XML_GetFeatureList(void);
 | 
					XML_GetFeatureList(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Expat follows the semantic versioning convention.
 | 
					/* Expat follows the semantic versioning convention.
 | 
				
			||||||
   See http://semver.org.
 | 
					   See http://semver.org.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define XML_MAJOR_VERSION 2
 | 
					#define XML_MAJOR_VERSION 2
 | 
				
			||||||
#define XML_MINOR_VERSION 2
 | 
					#define XML_MINOR_VERSION 2
 | 
				
			||||||
#define XML_MICRO_VERSION 7
 | 
					#define XML_MICRO_VERSION 8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,10 +35,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* External API definitions */
 | 
					/* External API definitions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
 | 
					 | 
				
			||||||
# define XML_USE_MSC_EXTENSIONS 1
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Expat tries very hard to make the API boundary very specifically
 | 
					/* Expat tries very hard to make the API boundary very specifically
 | 
				
			||||||
   defined.  There are two macros defined to control this boundary;
 | 
					   defined.  There are two macros defined to control this boundary;
 | 
				
			||||||
   each of these can be defined before including this header to
 | 
					   each of these can be defined before including this header to
 | 
				
			||||||
| 
						 | 
					@ -61,12 +57,17 @@
 | 
				
			||||||
   compiled with the cdecl calling convention as the default since
 | 
					   compiled with the cdecl calling convention as the default since
 | 
				
			||||||
   system headers may assume the cdecl convention.
 | 
					   system headers may assume the cdecl convention.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Namespace external symbols to allow multiple libexpat version to
 | 
				
			||||||
 | 
					   co-exist. */
 | 
				
			||||||
 | 
					#include "pyexpatns.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef XMLCALL
 | 
					#ifndef XMLCALL
 | 
				
			||||||
# if defined(_MSC_VER)
 | 
					#  if defined(_MSC_VER)
 | 
				
			||||||
#  define XMLCALL __cdecl
 | 
					#    define XMLCALL __cdecl
 | 
				
			||||||
# elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
 | 
					#  elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER)
 | 
				
			||||||
#  define XMLCALL __attribute__((cdecl))
 | 
					#    define XMLCALL __attribute__((cdecl))
 | 
				
			||||||
# else
 | 
					#  else
 | 
				
			||||||
/* For any platform which uses this definition and supports more than
 | 
					/* For any platform which uses this definition and supports more than
 | 
				
			||||||
   one calling convention, we need to extend this definition to
 | 
					   one calling convention, we need to extend this definition to
 | 
				
			||||||
   declare the convention used on that platform, if it's possible to
 | 
					   declare the convention used on that platform, if it's possible to
 | 
				
			||||||
| 
						 | 
					@ -77,49 +78,46 @@
 | 
				
			||||||
   pre-processor and how to specify the same calling convention as the
 | 
					   pre-processor and how to specify the same calling convention as the
 | 
				
			||||||
   platform's malloc() implementation.
 | 
					   platform's malloc() implementation.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#  define XMLCALL
 | 
					#    define XMLCALL
 | 
				
			||||||
# endif
 | 
					#  endif
 | 
				
			||||||
#endif  /* not defined XMLCALL */
 | 
					#endif /* not defined XMLCALL */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Namespace external symbols to allow multiple libexpat version to
 | 
					#if ! defined(XML_STATIC) && ! defined(XMLIMPORT)
 | 
				
			||||||
   co-exist. */
 | 
					#  ifndef XML_BUILDING_EXPAT
 | 
				
			||||||
#include "pyexpatns.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !defined(XML_STATIC) && !defined(XMLIMPORT)
 | 
					 | 
				
			||||||
# ifndef XML_BUILDING_EXPAT
 | 
					 | 
				
			||||||
/* using Expat from an application */
 | 
					/* using Expat from an application */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#  ifdef XML_USE_MSC_EXTENSIONS
 | 
					#    if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__)
 | 
				
			||||||
#   define XMLIMPORT __declspec(dllimport)
 | 
					#      define XMLIMPORT __declspec(dllimport)
 | 
				
			||||||
#  endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# endif
 | 
					#  endif
 | 
				
			||||||
#endif  /* not defined XML_STATIC */
 | 
					#endif /* not defined XML_STATIC */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef XML_ENABLE_VISIBILITY
 | 
					#ifndef XML_ENABLE_VISIBILITY
 | 
				
			||||||
# define XML_ENABLE_VISIBILITY 0
 | 
					#  define XML_ENABLE_VISIBILITY 0
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(XMLIMPORT) && XML_ENABLE_VISIBILITY
 | 
					#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY
 | 
				
			||||||
# define XMLIMPORT __attribute__ ((visibility ("default")))
 | 
					#  define XMLIMPORT __attribute__((visibility("default")))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* If we didn't define it above, define it away: */
 | 
					/* If we didn't define it above, define it away: */
 | 
				
			||||||
#ifndef XMLIMPORT
 | 
					#ifndef XMLIMPORT
 | 
				
			||||||
# define XMLIMPORT
 | 
					#  define XMLIMPORT
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
 | 
					#if defined(__GNUC__)                                                          \
 | 
				
			||||||
# define XML_ATTR_MALLOC __attribute__((__malloc__))
 | 
					    && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
 | 
				
			||||||
 | 
					#  define XML_ATTR_MALLOC __attribute__((__malloc__))
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
# define XML_ATTR_MALLOC
 | 
					#  define XML_ATTR_MALLOC
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
 | 
					#if defined(__GNUC__)                                                          \
 | 
				
			||||||
# define XML_ATTR_ALLOC_SIZE(x)  __attribute__((__alloc_size__(x)))
 | 
					    && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
 | 
				
			||||||
 | 
					#  define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
# define XML_ATTR_ALLOC_SIZE(x)
 | 
					#  define XML_ATTR_ALLOC_SIZE(x)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
 | 
					#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
 | 
				
			||||||
| 
						 | 
					@ -129,35 +127,30 @@ extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XML_UNICODE_WCHAR_T
 | 
					#ifdef XML_UNICODE_WCHAR_T
 | 
				
			||||||
# ifndef XML_UNICODE
 | 
					#  ifndef XML_UNICODE
 | 
				
			||||||
#  define XML_UNICODE
 | 
					#    define XML_UNICODE
 | 
				
			||||||
# endif
 | 
					#  endif
 | 
				
			||||||
# if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2)
 | 
					#  if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2)
 | 
				
			||||||
#  error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc"
 | 
					#    error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc"
 | 
				
			||||||
# endif
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XML_UNICODE     /* Information is UTF-16 encoded. */
 | 
					#ifdef XML_UNICODE /* Information is UTF-16 encoded. */
 | 
				
			||||||
# ifdef XML_UNICODE_WCHAR_T
 | 
					#  ifdef XML_UNICODE_WCHAR_T
 | 
				
			||||||
typedef wchar_t XML_Char;
 | 
					typedef wchar_t XML_Char;
 | 
				
			||||||
typedef wchar_t XML_LChar;
 | 
					typedef wchar_t XML_LChar;
 | 
				
			||||||
# else
 | 
					#  else
 | 
				
			||||||
typedef unsigned short XML_Char;
 | 
					typedef unsigned short XML_Char;
 | 
				
			||||||
typedef char XML_LChar;
 | 
					typedef char XML_LChar;
 | 
				
			||||||
# endif /* XML_UNICODE_WCHAR_T */
 | 
					#  endif /* XML_UNICODE_WCHAR_T */
 | 
				
			||||||
#else                  /* Information is UTF-8 encoded. */
 | 
					#else    /* Information is UTF-8 encoded. */
 | 
				
			||||||
typedef char XML_Char;
 | 
					typedef char XML_Char;
 | 
				
			||||||
typedef char XML_LChar;
 | 
					typedef char XML_LChar;
 | 
				
			||||||
#endif /* XML_UNICODE */
 | 
					#endif   /* XML_UNICODE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XML_LARGE_SIZE  /* Use large integers for file/stream positions. */
 | 
					#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
 | 
				
			||||||
# if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
 | 
					 | 
				
			||||||
typedef __int64 XML_Index; 
 | 
					 | 
				
			||||||
typedef unsigned __int64 XML_Size;
 | 
					 | 
				
			||||||
# else
 | 
					 | 
				
			||||||
typedef long long XML_Index;
 | 
					typedef long long XML_Index;
 | 
				
			||||||
typedef unsigned long long XML_Size;
 | 
					typedef unsigned long long XML_Size;
 | 
				
			||||||
# endif
 | 
					 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
typedef long XML_Index;
 | 
					typedef long XML_Index;
 | 
				
			||||||
typedef unsigned long XML_Size;
 | 
					typedef unsigned long XML_Size;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,34 +32,34 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */
 | 
					/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */
 | 
				
			||||||
/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
 | 
					    /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
 | 
				
			||||||
/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML,
 | 
					    /* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
 | 
					    /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
 | 
				
			||||||
/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
 | 
					    /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
 | 
				
			||||||
/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
 | 
					    /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
 | 
				
			||||||
/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
 | 
					    /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
 | 
				
			||||||
/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
					    /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
				
			||||||
/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
					    /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
 | 
				
			||||||
/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
 | 
					    /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
 | 
				
			||||||
/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
 | 
					    /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
 | 
				
			||||||
/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
					    /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
				
			||||||
/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
					    /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
				
			||||||
/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
 | 
					    /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
 | 
				
			||||||
/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
 | 
					    /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
 | 
				
			||||||
/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
					    /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
 | 
				
			||||||
/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
					    /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
 | 
				
			||||||
/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
					    /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
				
			||||||
/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@
 | 
				
			||||||
   USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
					   USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
 | 
					#if defined(__GNUC__) && defined(__i386__) && ! defined(__MINGW32__)
 | 
				
			||||||
/* We'll use this version by default only where we know it helps.
 | 
					/* We'll use this version by default only where we know it helps.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   regparm() generates warnings on Solaris boxes.   See SF bug #692878.
 | 
					   regparm() generates warnings on Solaris boxes.   See SF bug #692878.
 | 
				
			||||||
| 
						 | 
					@ -59,8 +59,8 @@
 | 
				
			||||||
   #define FASTCALL __attribute__((stdcall, regparm(3)))
 | 
					   #define FASTCALL __attribute__((stdcall, regparm(3)))
 | 
				
			||||||
   and let's try this:
 | 
					   and let's try this:
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define FASTCALL __attribute__((regparm(3)))
 | 
					#  define FASTCALL __attribute__((regparm(3)))
 | 
				
			||||||
#define PTRFASTCALL __attribute__((regparm(3)))
 | 
					#  define PTRFASTCALL __attribute__((regparm(3)))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Using __fastcall seems to have an unexpected negative effect under
 | 
					/* Using __fastcall seems to have an unexpected negative effect under
 | 
				
			||||||
| 
						 | 
					@ -74,55 +74,49 @@
 | 
				
			||||||
/* Make sure all of these are defined if they aren't already. */
 | 
					/* Make sure all of these are defined if they aren't already. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef FASTCALL
 | 
					#ifndef FASTCALL
 | 
				
			||||||
#define FASTCALL
 | 
					#  define FASTCALL
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef PTRCALL
 | 
					#ifndef PTRCALL
 | 
				
			||||||
#define PTRCALL
 | 
					#  define PTRCALL
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef PTRFASTCALL
 | 
					#ifndef PTRFASTCALL
 | 
				
			||||||
#define PTRFASTCALL
 | 
					#  define PTRFASTCALL
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef XML_MIN_SIZE
 | 
					#ifndef XML_MIN_SIZE
 | 
				
			||||||
#if !defined(__cplusplus) && !defined(inline)
 | 
					#  if ! defined(__cplusplus) && ! defined(inline)
 | 
				
			||||||
#ifdef __GNUC__
 | 
					#    ifdef __GNUC__
 | 
				
			||||||
#define inline __inline
 | 
					#      define inline __inline
 | 
				
			||||||
#endif /* __GNUC__ */
 | 
					#    endif /* __GNUC__ */
 | 
				
			||||||
#endif
 | 
					#  endif
 | 
				
			||||||
#endif /* XML_MIN_SIZE */
 | 
					#endif /* XML_MIN_SIZE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
#define inline inline
 | 
					#  define inline inline
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
#ifndef inline
 | 
					#  ifndef inline
 | 
				
			||||||
#define inline
 | 
					#    define inline
 | 
				
			||||||
#endif
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef UNUSED_P
 | 
					#ifndef UNUSED_P
 | 
				
			||||||
# ifdef __GNUC__
 | 
					#  define UNUSED_P(p) (void)p
 | 
				
			||||||
#  define UNUSED_P(p) UNUSED_ ## p __attribute__((__unused__))
 | 
					 | 
				
			||||||
# else
 | 
					 | 
				
			||||||
#  define UNUSED_P(p) UNUSED_ ## p
 | 
					 | 
				
			||||||
# endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef XML_ENABLE_VISIBILITY
 | 
					#ifdef XML_ENABLE_VISIBILITY
 | 
				
			||||||
#if XML_ENABLE_VISIBILITY
 | 
					#  if XML_ENABLE_VISIBILITY
 | 
				
			||||||
__attribute__ ((visibility ("default")))
 | 
					__attribute__((visibility("default")))
 | 
				
			||||||
#endif
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
_INTERNAL_trim_to_complete_utf8_characters(const char * from, const char ** fromLimRef);
 | 
					_INTERNAL_trim_to_complete_utf8_characters(const char *from,
 | 
				
			||||||
 | 
					                                           const char **fromLimRef);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,34 +31,34 @@
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
 | 
					    /* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
 | 
				
			||||||
/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME,
 | 
					    /* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME,
 | 
				
			||||||
/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
 | 
					    /* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
 | 
				
			||||||
/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
					    /* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
 | 
				
			||||||
/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
					    /* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
				
			||||||
/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
					    /* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
 | 
				
			||||||
/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
					    /* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,143 +0,0 @@
 | 
				
			||||||
/***************************************************************************
 | 
					 | 
				
			||||||
 *                                  _   _ ____  _
 | 
					 | 
				
			||||||
 *  Project                     ___| | | |  _ \| |
 | 
					 | 
				
			||||||
 *                             / __| | | | |_) | |
 | 
					 | 
				
			||||||
 *                            | (__| |_| |  _ <| |___
 | 
					 | 
				
			||||||
 *                             \___|\___/|_| \_\_____|
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Copyright (C) 2016 - 2017, Steve Holme, <steve_holme@hotmail.com>.
 | 
					 | 
				
			||||||
 * Copyright (C) 2017, Expat development team
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * All rights reserved.
 | 
					 | 
				
			||||||
 * Licensed under the MIT license:
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Permission to  use, copy,  modify, and distribute  this software  for any
 | 
					 | 
				
			||||||
 * purpose with  or without fee is  hereby granted, provided that  the above
 | 
					 | 
				
			||||||
 * copyright notice and this permission notice appear in all copies.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND,
 | 
					 | 
				
			||||||
 * EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF
 | 
					 | 
				
			||||||
 * MERCHANTABILITY, FITNESS FOR A  PARTICULAR PURPOSE AND NONINFRINGEMENT OF
 | 
					 | 
				
			||||||
 * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | 
					 | 
				
			||||||
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 | 
					 | 
				
			||||||
 * CONTRACT, TORT OR  OTHERWISE, ARISING FROM, OUT OF OR  IN CONNECTION WITH
 | 
					 | 
				
			||||||
 * THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Except as contained in this notice,  the name of a copyright holder shall
 | 
					 | 
				
			||||||
 * not be used in advertising or otherwise to promote the sale, use or other
 | 
					 | 
				
			||||||
 * dealings  in this  Software without  prior written  authorization of  the
 | 
					 | 
				
			||||||
 * copyright holder.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 ***************************************************************************/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(_WIN32)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <windows.h>
 | 
					 | 
				
			||||||
#include <tchar.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
HMODULE _Expat_LoadLibrary(LPCTSTR filename);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !defined(LOAD_WITH_ALTERED_SEARCH_PATH)
 | 
					 | 
				
			||||||
#define LOAD_WITH_ALTERED_SEARCH_PATH  0x00000008
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !defined(LOAD_LIBRARY_SEARCH_SYSTEM32)
 | 
					 | 
				
			||||||
#define LOAD_LIBRARY_SEARCH_SYSTEM32   0x00000800
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* We use our own typedef here since some headers might lack these */
 | 
					 | 
				
			||||||
typedef HMODULE (APIENTRY *LOADLIBRARYEX_FN)(LPCTSTR, HANDLE, DWORD);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* See function definitions in winbase.h */
 | 
					 | 
				
			||||||
#ifdef UNICODE
 | 
					 | 
				
			||||||
#  ifdef _WIN32_WCE
 | 
					 | 
				
			||||||
#    define LOADLIBRARYEX  L"LoadLibraryExW"
 | 
					 | 
				
			||||||
#  else
 | 
					 | 
				
			||||||
#    define LOADLIBRARYEX  "LoadLibraryExW"
 | 
					 | 
				
			||||||
#  endif
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#  define LOADLIBRARYEX    "LoadLibraryExA"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * _Expat_LoadLibrary()
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This is used to dynamically load DLLs using the most secure method available
 | 
					 | 
				
			||||||
 * for the version of Windows that we are running on.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Parameters:
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * filename  [in] - The filename or full path of the DLL to load. If only the
 | 
					 | 
				
			||||||
 *                  filename is passed then the DLL will be loaded from the
 | 
					 | 
				
			||||||
 *                  Windows system directory.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Returns the handle of the module on success; otherwise NULL.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
HMODULE _Expat_LoadLibrary(LPCTSTR filename)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  HMODULE hModule = NULL;
 | 
					 | 
				
			||||||
  LOADLIBRARYEX_FN pLoadLibraryEx = NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Get a handle to kernel32 so we can access it's functions at runtime */
 | 
					 | 
				
			||||||
  HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32"));
 | 
					 | 
				
			||||||
  if(!hKernel32)
 | 
					 | 
				
			||||||
    return NULL;  /* LCOV_EXCL_LINE */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Attempt to find LoadLibraryEx() which is only available on Windows 2000
 | 
					 | 
				
			||||||
     and above */
 | 
					 | 
				
			||||||
  pLoadLibraryEx = (LOADLIBRARYEX_FN) GetProcAddress(hKernel32, LOADLIBRARYEX);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Detect if there's already a path in the filename and load the library if
 | 
					 | 
				
			||||||
     there is. Note: Both back slashes and forward slashes have been supported
 | 
					 | 
				
			||||||
     since the earlier days of DOS at an API level although they are not
 | 
					 | 
				
			||||||
     supported by command prompt */
 | 
					 | 
				
			||||||
  if(_tcspbrk(filename, TEXT("\\/"))) {
 | 
					 | 
				
			||||||
    /** !checksrc! disable BANNEDFUNC 1 **/
 | 
					 | 
				
			||||||
    hModule = pLoadLibraryEx ?
 | 
					 | 
				
			||||||
      pLoadLibraryEx(filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) :
 | 
					 | 
				
			||||||
      LoadLibrary(filename);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  /* Detect if KB2533623 is installed, as LOAD_LIBARY_SEARCH_SYSTEM32 is only
 | 
					 | 
				
			||||||
     supported on Windows Vista, Windows Server 2008, Windows 7 and Windows
 | 
					 | 
				
			||||||
     Server 2008 R2 with this patch or natively on Windows 8 and above */
 | 
					 | 
				
			||||||
  else if(pLoadLibraryEx && GetProcAddress(hKernel32, "AddDllDirectory")) {
 | 
					 | 
				
			||||||
    /* Load the DLL from the Windows system directory */
 | 
					 | 
				
			||||||
    hModule = pLoadLibraryEx(filename, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  else {
 | 
					 | 
				
			||||||
    /* Attempt to get the Windows system path */
 | 
					 | 
				
			||||||
    UINT systemdirlen = GetSystemDirectory(NULL, 0);
 | 
					 | 
				
			||||||
    if(systemdirlen) {
 | 
					 | 
				
			||||||
      /* Allocate space for the full DLL path (Room for the null terminator
 | 
					 | 
				
			||||||
         is included in systemdirlen) */
 | 
					 | 
				
			||||||
      size_t filenamelen = _tcslen(filename);
 | 
					 | 
				
			||||||
      TCHAR *path = malloc(sizeof(TCHAR) * (systemdirlen + 1 + filenamelen));
 | 
					 | 
				
			||||||
      if(path && GetSystemDirectory(path, systemdirlen)) {
 | 
					 | 
				
			||||||
        /* Calculate the full DLL path */
 | 
					 | 
				
			||||||
        _tcscpy(path + _tcslen(path), TEXT("\\"));
 | 
					 | 
				
			||||||
        _tcscpy(path + _tcslen(path), filename);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /* Load the DLL from the Windows system directory */
 | 
					 | 
				
			||||||
        /** !checksrc! disable BANNEDFUNC 1 **/
 | 
					 | 
				
			||||||
        hModule = pLoadLibraryEx ?
 | 
					 | 
				
			||||||
          pLoadLibraryEx(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) :
 | 
					 | 
				
			||||||
          LoadLibrary(path);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      free(path);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return hModule;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#else /* defined(_WIN32) */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ISO C requires a translation unit to contain at least one declaration
 | 
					 | 
				
			||||||
   [-Wempty-translation-unit] */
 | 
					 | 
				
			||||||
typedef int _TRANSLATION_UNIT_LOAD_LIBRARY_C_NOT_EMTPY;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* defined(_WIN32) */
 | 
					 | 
				
			||||||
| 
						 | 
					@ -31,152 +31,106 @@
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const unsigned namingBitmap[] = {
 | 
					static const unsigned namingBitmap[] = {
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
					    0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x04000000,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
					    0x87FFFFFE, 0x07FFFFFE, 0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
 | 
				
			||||||
0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
 | 
					    0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
				
			||||||
0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
 | 
					    0xFFFFE00F, 0xFC31FFFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
 | 
				
			||||||
0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
 | 
					    0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, 0x00000000, 0x00000000,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
 | 
					    0x00000000, 0x00000000, 0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
 | 
				
			||||||
0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
 | 
					    0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, 0xFFFF0003, 0xFFFFFFFF,
 | 
				
			||||||
0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
 | 
					    0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, 0x00000000, 0x07FFFFFE,
 | 
				
			||||||
0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
 | 
					    0x000007FE, 0xFFFE0000, 0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
 | 
				
			||||||
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
 | 
					    0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, 0xFFF99FE0, 0x03C5FDFF,
 | 
				
			||||||
0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
 | 
					    0xB0000000, 0x00030003, 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
 | 
				
			||||||
0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
 | 
					    0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, 0xFFF99FE0, 0x23CDFDFF,
 | 
				
			||||||
0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
 | 
					    0xB0000000, 0x00000003, 0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
 | 
				
			||||||
0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
 | 
					    0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, 0xFFFDDFE0, 0x03EFFDFF,
 | 
				
			||||||
0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
 | 
					    0x40000000, 0x00000003, 0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
 | 
				
			||||||
0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
 | 
					    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x000D7FFF,
 | 
				
			||||||
0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
 | 
					    0x0000003F, 0x00000000, 0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
 | 
				
			||||||
0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
 | 
					    0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, 0x00000000, 0x00000000,
 | 
				
			||||||
0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
 | 
					    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
				
			||||||
0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
 | 
					    0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, 0x0007DAED, 0x50000000,
 | 
				
			||||||
0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
 | 
					    0x82315001, 0x002C62AB, 0x40000000, 0xF580C900, 0x00000007, 0x02010800,
 | 
				
			||||||
0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
 | 
					    0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0xFFFFFFFF,
 | 
				
			||||||
0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
 | 
					    0xFFFFFFFF, 0x03FFFFFF, 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
 | 
				
			||||||
0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
 | 
					    0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, 0x00000000, 0x00004C40,
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000,
 | 
				
			||||||
0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
 | 
					    0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, 0x001FFFFF, 0xFFFFFFFE,
 | 
				
			||||||
0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
 | 
					    0xFFFFFFFF, 0x07FFFFFF, 0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
 | 
				
			||||||
0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
 | 
					    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F,
 | 
				
			||||||
0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
 | 
					    0x00000000, 0x00000000, 0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
 | 
				
			||||||
0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
 | 
					    0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, 0x00FFFFFF, 0x00000000,
 | 
				
			||||||
0x40000000, 0xF580C900, 0x00000007, 0x02010800,
 | 
					    0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
					    0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, 0xFFFFD7C0, 0xFFFFFFFB,
 | 
				
			||||||
0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
 | 
					    0x547F7FFF, 0x000FFFFD, 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
 | 
				
			||||||
0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
 | 
					    0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000,
 | 
				
			||||||
0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
 | 
					    0x027FFFFF, 0xFFFFFFFE, 0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
 | 
				
			||||||
0x00000000, 0x00004C40, 0x00000000, 0x00000000,
 | 
					    0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, 0xFFFFFFFF, 0x7CFFFFFF,
 | 
				
			||||||
0x00000007, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0xFFEF7FFF, 0x03FF3DFF, 0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
 | 
				
			||||||
0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
 | 
					    0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, 0xFFF987E4, 0xD36DFDFF,
 | 
				
			||||||
0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
 | 
					    0x5E003987, 0x001FFFC0, 0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
 | 
				
			||||||
0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
 | 
					    0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, 0xD63DC7EC, 0xC3BFC718,
 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					    0x00803DC7, 0x0000FF80, 0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
					    0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, 0xFFFDDFEC, 0xC3FFFDFF,
 | 
				
			||||||
0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
 | 
					    0x00803DCF, 0x0000FFC3, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 | 
					    0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, 0xFEF02596, 0x3BFF6CAE,
 | 
				
			||||||
0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
 | 
					    0x03FF3F5F, 0x00000000, 0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
 | 
				
			||||||
0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
 | 
					    0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
				
			||||||
0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
 | 
					    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
 | 
				
			||||||
0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
 | 
					    0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, 0x661FFFFF, 0xFFFFFFFE,
 | 
				
			||||||
0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
 | 
					    0xFFFFFFFF, 0x77FFFFFF,
 | 
				
			||||||
0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
 | 
					 | 
				
			||||||
0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
 | 
					 | 
				
			||||||
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
 | 
					 | 
				
			||||||
0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
 | 
					 | 
				
			||||||
0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
 | 
					 | 
				
			||||||
0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
 | 
					 | 
				
			||||||
0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
 | 
					 | 
				
			||||||
0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
 | 
					 | 
				
			||||||
0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
 | 
					 | 
				
			||||||
0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
 | 
					 | 
				
			||||||
0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
 | 
					 | 
				
			||||||
0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
 | 
					 | 
				
			||||||
0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
 | 
					 | 
				
			||||||
0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
 | 
					 | 
				
			||||||
0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
 | 
					 | 
				
			||||||
0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
 | 
					 | 
				
			||||||
0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
 | 
					 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					 | 
				
			||||||
0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
 | 
					 | 
				
			||||||
0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
 | 
					 | 
				
			||||||
0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
 | 
					 | 
				
			||||||
0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
 | 
					 | 
				
			||||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 | 
					 | 
				
			||||||
0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
 | 
					 | 
				
			||||||
0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
 | 
					 | 
				
			||||||
0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
static const unsigned char nmstrtPages[] = {
 | 
					static const unsigned char nmstrtPages[] = {
 | 
				
			||||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
 | 
					    0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x09, 0x0A, 0x0B,
 | 
				
			||||||
0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
 | 
					    0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x00, 0x14, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
static const unsigned char namePages[] = {
 | 
					static const unsigned char namePages[] = {
 | 
				
			||||||
0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
 | 
					    0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, 0x00, 0x1F, 0x20, 0x21,
 | 
				
			||||||
0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
 | 
					    0x22, 0x23, 0x24, 0x25, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x26, 0x14, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
 | 
					    0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
					 | 
				
			||||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,10 @@
 | 
				
			||||||
 * --------------------------------------------------------------------------
 | 
					 * --------------------------------------------------------------------------
 | 
				
			||||||
 * HISTORY:
 | 
					 * HISTORY:
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 | 
					 * 2019-08-03  (Sebastian Pipping)
 | 
				
			||||||
 | 
					 *   - Mark part of sip24_valid as to be excluded from clang-format
 | 
				
			||||||
 | 
					 *   - Re-format code using clang-format 9
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 * 2018-07-08  (Anton Maklakov)
 | 
					 * 2018-07-08  (Anton Maklakov)
 | 
				
			||||||
 *   - Add "fall through" markers for GCC's -Wimplicit-fallthrough
 | 
					 *   - Add "fall through" markers for GCC's -Wimplicit-fallthrough
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -94,186 +98,186 @@
 | 
				
			||||||
#include <stddef.h> /* size_t */
 | 
					#include <stddef.h> /* size_t */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600)
 | 
					#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600)
 | 
				
			||||||
  /* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */
 | 
					/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */
 | 
				
			||||||
  typedef unsigned __int8   uint8_t;
 | 
					typedef unsigned __int8 uint8_t;
 | 
				
			||||||
  typedef unsigned __int32 uint32_t;
 | 
					typedef unsigned __int32 uint32_t;
 | 
				
			||||||
  typedef unsigned __int64 uint64_t;
 | 
					typedef unsigned __int64 uint64_t;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 #include <stdint.h> /* uint64_t uint32_t uint8_t */
 | 
					#  include <stdint.h> /* uint64_t uint32_t uint8_t */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Workaround to not require a C++11 compiler for using ULL suffix
 | 
					 * Workaround to not require a C++11 compiler for using ULL suffix
 | 
				
			||||||
 * if this code is included and compiled as C++; related GCC warning is:
 | 
					 * if this code is included and compiled as C++; related GCC warning is:
 | 
				
			||||||
 * warning: use of C++11 long long integer constant [-Wlong-long]
 | 
					 * warning: use of C++11 long long integer constant [-Wlong-long]
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define _SIP_ULL(high, low)  (((uint64_t)high << 32) | low)
 | 
					#define _SIP_ULL(high, low) (((uint64_t)high << 32) | low)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SIP_ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SIP_ROTL(x, b) (uint64_t)(((x) << (b)) | ( (x) >> (64 - (b))))
 | 
					#define SIP_U32TO8_LE(p, v)                                                    \
 | 
				
			||||||
 | 
					  (p)[0] = (uint8_t)((v) >> 0);                                                \
 | 
				
			||||||
 | 
					  (p)[1] = (uint8_t)((v) >> 8);                                                \
 | 
				
			||||||
 | 
					  (p)[2] = (uint8_t)((v) >> 16);                                               \
 | 
				
			||||||
 | 
					  (p)[3] = (uint8_t)((v) >> 24);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SIP_U32TO8_LE(p, v) \
 | 
					#define SIP_U64TO8_LE(p, v)                                                    \
 | 
				
			||||||
	(p)[0] = (uint8_t)((v) >>  0); (p)[1] = (uint8_t)((v) >>  8); \
 | 
					  SIP_U32TO8_LE((p) + 0, (uint32_t)((v) >> 0));                                \
 | 
				
			||||||
	(p)[2] = (uint8_t)((v) >> 16); (p)[3] = (uint8_t)((v) >> 24);
 | 
					  SIP_U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SIP_U64TO8_LE(p, v) \
 | 
					#define SIP_U8TO64_LE(p)                                                       \
 | 
				
			||||||
	SIP_U32TO8_LE((p) + 0, (uint32_t)((v) >>  0)); \
 | 
					  (((uint64_t)((p)[0]) << 0) | ((uint64_t)((p)[1]) << 8)                       \
 | 
				
			||||||
	SIP_U32TO8_LE((p) + 4, (uint32_t)((v) >> 32));
 | 
					   | ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24)                   \
 | 
				
			||||||
 | 
					   | ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40)                   \
 | 
				
			||||||
 | 
					   | ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SIP_U8TO64_LE(p) \
 | 
					#define SIPHASH_INITIALIZER                                                    \
 | 
				
			||||||
	(((uint64_t)((p)[0]) <<  0) | \
 | 
					  { 0, 0, 0, 0, {0}, 0, 0 }
 | 
				
			||||||
	 ((uint64_t)((p)[1]) <<  8) | \
 | 
					 | 
				
			||||||
	 ((uint64_t)((p)[2]) << 16) | \
 | 
					 | 
				
			||||||
	 ((uint64_t)((p)[3]) << 24) | \
 | 
					 | 
				
			||||||
	 ((uint64_t)((p)[4]) << 32) | \
 | 
					 | 
				
			||||||
	 ((uint64_t)((p)[5]) << 40) | \
 | 
					 | 
				
			||||||
	 ((uint64_t)((p)[6]) << 48) | \
 | 
					 | 
				
			||||||
	 ((uint64_t)((p)[7]) << 56))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SIPHASH_INITIALIZER { 0, 0, 0, 0, { 0 }, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct siphash {
 | 
					struct siphash {
 | 
				
			||||||
	uint64_t v0, v1, v2, v3;
 | 
					  uint64_t v0, v1, v2, v3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unsigned char buf[8], *p;
 | 
					  unsigned char buf[8], *p;
 | 
				
			||||||
	uint64_t c;
 | 
					  uint64_t c;
 | 
				
			||||||
}; /* struct siphash */
 | 
					}; /* struct siphash */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SIP_KEYLEN 16
 | 
					#define SIP_KEYLEN 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct sipkey {
 | 
					struct sipkey {
 | 
				
			||||||
	uint64_t k[2];
 | 
					  uint64_t k[2];
 | 
				
			||||||
}; /* struct sipkey */
 | 
					}; /* struct sipkey */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define sip_keyof(k) sip_tokey(&(struct sipkey){ { 0 } }, (k))
 | 
					#define sip_keyof(k) sip_tokey(&(struct sipkey){{0}}, (k))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct sipkey *sip_tokey(struct sipkey *key, const void *src) {
 | 
					static struct sipkey *
 | 
				
			||||||
	key->k[0] = SIP_U8TO64_LE((const unsigned char *)src);
 | 
					sip_tokey(struct sipkey *key, const void *src) {
 | 
				
			||||||
	key->k[1] = SIP_U8TO64_LE((const unsigned char *)src + 8);
 | 
					  key->k[0] = SIP_U8TO64_LE((const unsigned char *)src);
 | 
				
			||||||
	return key;
 | 
					  key->k[1] = SIP_U8TO64_LE((const unsigned char *)src + 8);
 | 
				
			||||||
 | 
					  return key;
 | 
				
			||||||
} /* sip_tokey() */
 | 
					} /* sip_tokey() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef SIPHASH_TOBIN
 | 
					#ifdef SIPHASH_TOBIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define sip_binof(v) sip_tobin((unsigned char[8]){ 0 }, (v))
 | 
					#  define sip_binof(v) sip_tobin((unsigned char[8]){0}, (v))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void *sip_tobin(void *dst, uint64_t u64) {
 | 
					static void *
 | 
				
			||||||
	SIP_U64TO8_LE((unsigned char *)dst, u64);
 | 
					sip_tobin(void *dst, uint64_t u64) {
 | 
				
			||||||
	return dst;
 | 
					  SIP_U64TO8_LE((unsigned char *)dst, u64);
 | 
				
			||||||
 | 
					  return dst;
 | 
				
			||||||
} /* sip_tobin() */
 | 
					} /* sip_tobin() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif  /* SIPHASH_TOBIN */
 | 
					#endif /* SIPHASH_TOBIN */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					sip_round(struct siphash *H, const int rounds) {
 | 
				
			||||||
 | 
					  int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void sip_round(struct siphash *H, const int rounds) {
 | 
					  for (i = 0; i < rounds; i++) {
 | 
				
			||||||
	int i;
 | 
					    H->v0 += H->v1;
 | 
				
			||||||
 | 
					    H->v1 = SIP_ROTL(H->v1, 13);
 | 
				
			||||||
 | 
					    H->v1 ^= H->v0;
 | 
				
			||||||
 | 
					    H->v0 = SIP_ROTL(H->v0, 32);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < rounds; i++) {
 | 
					    H->v2 += H->v3;
 | 
				
			||||||
		H->v0 += H->v1;
 | 
					    H->v3 = SIP_ROTL(H->v3, 16);
 | 
				
			||||||
		H->v1 = SIP_ROTL(H->v1, 13);
 | 
					    H->v3 ^= H->v2;
 | 
				
			||||||
		H->v1 ^= H->v0;
 | 
					 | 
				
			||||||
		H->v0 = SIP_ROTL(H->v0, 32);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		H->v2 += H->v3;
 | 
					    H->v0 += H->v3;
 | 
				
			||||||
		H->v3 = SIP_ROTL(H->v3, 16);
 | 
					    H->v3 = SIP_ROTL(H->v3, 21);
 | 
				
			||||||
		H->v3 ^= H->v2;
 | 
					    H->v3 ^= H->v0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		H->v0 += H->v3;
 | 
					    H->v2 += H->v1;
 | 
				
			||||||
		H->v3 = SIP_ROTL(H->v3, 21);
 | 
					    H->v1 = SIP_ROTL(H->v1, 17);
 | 
				
			||||||
		H->v3 ^= H->v0;
 | 
					    H->v1 ^= H->v2;
 | 
				
			||||||
 | 
					    H->v2 = SIP_ROTL(H->v2, 32);
 | 
				
			||||||
		H->v2 += H->v1;
 | 
					  }
 | 
				
			||||||
		H->v1 = SIP_ROTL(H->v1, 17);
 | 
					 | 
				
			||||||
		H->v1 ^= H->v2;
 | 
					 | 
				
			||||||
		H->v2 = SIP_ROTL(H->v2, 32);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
} /* sip_round() */
 | 
					} /* sip_round() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct siphash *
 | 
				
			||||||
 | 
					sip24_init(struct siphash *H, const struct sipkey *key) {
 | 
				
			||||||
 | 
					  H->v0 = _SIP_ULL(0x736f6d65U, 0x70736575U) ^ key->k[0];
 | 
				
			||||||
 | 
					  H->v1 = _SIP_ULL(0x646f7261U, 0x6e646f6dU) ^ key->k[1];
 | 
				
			||||||
 | 
					  H->v2 = _SIP_ULL(0x6c796765U, 0x6e657261U) ^ key->k[0];
 | 
				
			||||||
 | 
					  H->v3 = _SIP_ULL(0x74656462U, 0x79746573U) ^ key->k[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct siphash *sip24_init(struct siphash *H,
 | 
					  H->p = H->buf;
 | 
				
			||||||
		const struct sipkey *key) {
 | 
					  H->c = 0;
 | 
				
			||||||
	H->v0 = _SIP_ULL(0x736f6d65U, 0x70736575U) ^ key->k[0];
 | 
					 | 
				
			||||||
	H->v1 = _SIP_ULL(0x646f7261U, 0x6e646f6dU) ^ key->k[1];
 | 
					 | 
				
			||||||
	H->v2 = _SIP_ULL(0x6c796765U, 0x6e657261U) ^ key->k[0];
 | 
					 | 
				
			||||||
	H->v3 = _SIP_ULL(0x74656462U, 0x79746573U) ^ key->k[1];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	H->p = H->buf;
 | 
					  return H;
 | 
				
			||||||
	H->c = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return H;
 | 
					 | 
				
			||||||
} /* sip24_init() */
 | 
					} /* sip24_init() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define sip_endof(a) (&(a)[sizeof(a) / sizeof *(a)])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define sip_endof(a) (&(a)[sizeof (a) / sizeof *(a)])
 | 
					static struct siphash *
 | 
				
			||||||
 | 
					sip24_update(struct siphash *H, const void *src, size_t len) {
 | 
				
			||||||
 | 
					  const unsigned char *p = (const unsigned char *)src, *pe = p + len;
 | 
				
			||||||
 | 
					  uint64_t m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct siphash *sip24_update(struct siphash *H, const void *src,
 | 
					  do {
 | 
				
			||||||
		size_t len) {
 | 
					    while (p < pe && H->p < sip_endof(H->buf))
 | 
				
			||||||
	const unsigned char *p = (const unsigned char *)src, *pe = p + len;
 | 
					      *H->p++ = *p++;
 | 
				
			||||||
	uint64_t m;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	do {
 | 
					    if (H->p < sip_endof(H->buf))
 | 
				
			||||||
		while (p < pe && H->p < sip_endof(H->buf))
 | 
					      break;
 | 
				
			||||||
			*H->p++ = *p++;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (H->p < sip_endof(H->buf))
 | 
					    m = SIP_U8TO64_LE(H->buf);
 | 
				
			||||||
			break;
 | 
					    H->v3 ^= m;
 | 
				
			||||||
 | 
					    sip_round(H, 2);
 | 
				
			||||||
 | 
					    H->v0 ^= m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		m = SIP_U8TO64_LE(H->buf);
 | 
					    H->p = H->buf;
 | 
				
			||||||
		H->v3 ^= m;
 | 
					    H->c += 8;
 | 
				
			||||||
		sip_round(H, 2);
 | 
					  } while (p < pe);
 | 
				
			||||||
		H->v0 ^= m;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		H->p = H->buf;
 | 
					  return H;
 | 
				
			||||||
		H->c += 8;
 | 
					 | 
				
			||||||
	} while (p < pe);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return H;
 | 
					 | 
				
			||||||
} /* sip24_update() */
 | 
					} /* sip24_update() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static uint64_t
 | 
				
			||||||
 | 
					sip24_final(struct siphash *H) {
 | 
				
			||||||
 | 
					  const char left = (char)(H->p - H->buf);
 | 
				
			||||||
 | 
					  uint64_t b = (H->c + left) << 56;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static uint64_t sip24_final(struct siphash *H) {
 | 
					  switch (left) {
 | 
				
			||||||
	const char left = (char)(H->p - H->buf);
 | 
					  case 7:
 | 
				
			||||||
	uint64_t b = (H->c + left) << 56;
 | 
					    b |= (uint64_t)H->buf[6] << 48;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 6:
 | 
				
			||||||
 | 
					    b |= (uint64_t)H->buf[5] << 40;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 5:
 | 
				
			||||||
 | 
					    b |= (uint64_t)H->buf[4] << 32;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 4:
 | 
				
			||||||
 | 
					    b |= (uint64_t)H->buf[3] << 24;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 3:
 | 
				
			||||||
 | 
					    b |= (uint64_t)H->buf[2] << 16;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 2:
 | 
				
			||||||
 | 
					    b |= (uint64_t)H->buf[1] << 8;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 1:
 | 
				
			||||||
 | 
					    b |= (uint64_t)H->buf[0] << 0;
 | 
				
			||||||
 | 
					    /* fall through */
 | 
				
			||||||
 | 
					  case 0:
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (left) {
 | 
					  H->v3 ^= b;
 | 
				
			||||||
	case 7: b |= (uint64_t)H->buf[6] << 48;
 | 
					  sip_round(H, 2);
 | 
				
			||||||
		/* fall through */
 | 
					  H->v0 ^= b;
 | 
				
			||||||
	case 6: b |= (uint64_t)H->buf[5] << 40;
 | 
					  H->v2 ^= 0xff;
 | 
				
			||||||
		/* fall through */
 | 
					  sip_round(H, 4);
 | 
				
			||||||
	case 5: b |= (uint64_t)H->buf[4] << 32;
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 4: b |= (uint64_t)H->buf[3] << 24;
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 3: b |= (uint64_t)H->buf[2] << 16;
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 2: b |= (uint64_t)H->buf[1] << 8;
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 1: b |= (uint64_t)H->buf[0] << 0;
 | 
					 | 
				
			||||||
		/* fall through */
 | 
					 | 
				
			||||||
	case 0: break;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	H->v3 ^= b;
 | 
					  return H->v0 ^ H->v1 ^ H->v2 ^ H->v3;
 | 
				
			||||||
	sip_round(H, 2);
 | 
					 | 
				
			||||||
	H->v0 ^= b;
 | 
					 | 
				
			||||||
	H->v2 ^= 0xff;
 | 
					 | 
				
			||||||
	sip_round(H, 4);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return H->v0 ^ H->v1 ^ H->v2  ^ H->v3;
 | 
					 | 
				
			||||||
} /* sip24_final() */
 | 
					} /* sip24_final() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static uint64_t
 | 
				
			||||||
static uint64_t siphash24(const void *src, size_t len,
 | 
					siphash24(const void *src, size_t len, const struct sipkey *key) {
 | 
				
			||||||
		const struct sipkey *key) {
 | 
					  struct siphash state = SIPHASH_INITIALIZER;
 | 
				
			||||||
	struct siphash state = SIPHASH_INITIALIZER;
 | 
					  return sip24_final(sip24_update(sip24_init(&state, key), src, len));
 | 
				
			||||||
	return sip24_final(sip24_update(sip24_init(&state, key), src, len));
 | 
					 | 
				
			||||||
} /* siphash24() */
 | 
					} /* siphash24() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * SipHash-2-4 output with
 | 
					 * SipHash-2-4 output with
 | 
				
			||||||
 * k = 00 01 02 ...
 | 
					 * k = 00 01 02 ...
 | 
				
			||||||
| 
						 | 
					@ -285,107 +289,110 @@ static uint64_t siphash24(const void *src, size_t len,
 | 
				
			||||||
 * ...
 | 
					 * ...
 | 
				
			||||||
 * in = 00 01 02 ... 3e (63 bytes)
 | 
					 * in = 00 01 02 ... 3e (63 bytes)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static int sip24_valid(void) {
 | 
					static int
 | 
				
			||||||
	static const unsigned char vectors[64][8] = {
 | 
					sip24_valid(void) {
 | 
				
			||||||
		{ 0x31, 0x0e, 0x0e, 0xdd, 0x47, 0xdb, 0x6f, 0x72, },
 | 
					  /* clang-format off */
 | 
				
			||||||
		{ 0xfd, 0x67, 0xdc, 0x93, 0xc5, 0x39, 0xf8, 0x74, },
 | 
					  static const unsigned char vectors[64][8] = {
 | 
				
			||||||
		{ 0x5a, 0x4f, 0xa9, 0xd9, 0x09, 0x80, 0x6c, 0x0d, },
 | 
					    { 0x31, 0x0e, 0x0e, 0xdd, 0x47, 0xdb, 0x6f, 0x72, },
 | 
				
			||||||
		{ 0x2d, 0x7e, 0xfb, 0xd7, 0x96, 0x66, 0x67, 0x85, },
 | 
					    { 0xfd, 0x67, 0xdc, 0x93, 0xc5, 0x39, 0xf8, 0x74, },
 | 
				
			||||||
		{ 0xb7, 0x87, 0x71, 0x27, 0xe0, 0x94, 0x27, 0xcf, },
 | 
					    { 0x5a, 0x4f, 0xa9, 0xd9, 0x09, 0x80, 0x6c, 0x0d, },
 | 
				
			||||||
		{ 0x8d, 0xa6, 0x99, 0xcd, 0x64, 0x55, 0x76, 0x18, },
 | 
					    { 0x2d, 0x7e, 0xfb, 0xd7, 0x96, 0x66, 0x67, 0x85, },
 | 
				
			||||||
		{ 0xce, 0xe3, 0xfe, 0x58, 0x6e, 0x46, 0xc9, 0xcb, },
 | 
					    { 0xb7, 0x87, 0x71, 0x27, 0xe0, 0x94, 0x27, 0xcf, },
 | 
				
			||||||
		{ 0x37, 0xd1, 0x01, 0x8b, 0xf5, 0x00, 0x02, 0xab, },
 | 
					    { 0x8d, 0xa6, 0x99, 0xcd, 0x64, 0x55, 0x76, 0x18, },
 | 
				
			||||||
		{ 0x62, 0x24, 0x93, 0x9a, 0x79, 0xf5, 0xf5, 0x93, },
 | 
					    { 0xce, 0xe3, 0xfe, 0x58, 0x6e, 0x46, 0xc9, 0xcb, },
 | 
				
			||||||
		{ 0xb0, 0xe4, 0xa9, 0x0b, 0xdf, 0x82, 0x00, 0x9e, },
 | 
					    { 0x37, 0xd1, 0x01, 0x8b, 0xf5, 0x00, 0x02, 0xab, },
 | 
				
			||||||
		{ 0xf3, 0xb9, 0xdd, 0x94, 0xc5, 0xbb, 0x5d, 0x7a, },
 | 
					    { 0x62, 0x24, 0x93, 0x9a, 0x79, 0xf5, 0xf5, 0x93, },
 | 
				
			||||||
		{ 0xa7, 0xad, 0x6b, 0x22, 0x46, 0x2f, 0xb3, 0xf4, },
 | 
					    { 0xb0, 0xe4, 0xa9, 0x0b, 0xdf, 0x82, 0x00, 0x9e, },
 | 
				
			||||||
		{ 0xfb, 0xe5, 0x0e, 0x86, 0xbc, 0x8f, 0x1e, 0x75, },
 | 
					    { 0xf3, 0xb9, 0xdd, 0x94, 0xc5, 0xbb, 0x5d, 0x7a, },
 | 
				
			||||||
		{ 0x90, 0x3d, 0x84, 0xc0, 0x27, 0x56, 0xea, 0x14, },
 | 
					    { 0xa7, 0xad, 0x6b, 0x22, 0x46, 0x2f, 0xb3, 0xf4, },
 | 
				
			||||||
		{ 0xee, 0xf2, 0x7a, 0x8e, 0x90, 0xca, 0x23, 0xf7, },
 | 
					    { 0xfb, 0xe5, 0x0e, 0x86, 0xbc, 0x8f, 0x1e, 0x75, },
 | 
				
			||||||
		{ 0xe5, 0x45, 0xbe, 0x49, 0x61, 0xca, 0x29, 0xa1, },
 | 
					    { 0x90, 0x3d, 0x84, 0xc0, 0x27, 0x56, 0xea, 0x14, },
 | 
				
			||||||
		{ 0xdb, 0x9b, 0xc2, 0x57, 0x7f, 0xcc, 0x2a, 0x3f, },
 | 
					    { 0xee, 0xf2, 0x7a, 0x8e, 0x90, 0xca, 0x23, 0xf7, },
 | 
				
			||||||
		{ 0x94, 0x47, 0xbe, 0x2c, 0xf5, 0xe9, 0x9a, 0x69, },
 | 
					    { 0xe5, 0x45, 0xbe, 0x49, 0x61, 0xca, 0x29, 0xa1, },
 | 
				
			||||||
		{ 0x9c, 0xd3, 0x8d, 0x96, 0xf0, 0xb3, 0xc1, 0x4b, },
 | 
					    { 0xdb, 0x9b, 0xc2, 0x57, 0x7f, 0xcc, 0x2a, 0x3f, },
 | 
				
			||||||
		{ 0xbd, 0x61, 0x79, 0xa7, 0x1d, 0xc9, 0x6d, 0xbb, },
 | 
					    { 0x94, 0x47, 0xbe, 0x2c, 0xf5, 0xe9, 0x9a, 0x69, },
 | 
				
			||||||
		{ 0x98, 0xee, 0xa2, 0x1a, 0xf2, 0x5c, 0xd6, 0xbe, },
 | 
					    { 0x9c, 0xd3, 0x8d, 0x96, 0xf0, 0xb3, 0xc1, 0x4b, },
 | 
				
			||||||
		{ 0xc7, 0x67, 0x3b, 0x2e, 0xb0, 0xcb, 0xf2, 0xd0, },
 | 
					    { 0xbd, 0x61, 0x79, 0xa7, 0x1d, 0xc9, 0x6d, 0xbb, },
 | 
				
			||||||
		{ 0x88, 0x3e, 0xa3, 0xe3, 0x95, 0x67, 0x53, 0x93, },
 | 
					    { 0x98, 0xee, 0xa2, 0x1a, 0xf2, 0x5c, 0xd6, 0xbe, },
 | 
				
			||||||
		{ 0xc8, 0xce, 0x5c, 0xcd, 0x8c, 0x03, 0x0c, 0xa8, },
 | 
					    { 0xc7, 0x67, 0x3b, 0x2e, 0xb0, 0xcb, 0xf2, 0xd0, },
 | 
				
			||||||
		{ 0x94, 0xaf, 0x49, 0xf6, 0xc6, 0x50, 0xad, 0xb8, },
 | 
					    { 0x88, 0x3e, 0xa3, 0xe3, 0x95, 0x67, 0x53, 0x93, },
 | 
				
			||||||
		{ 0xea, 0xb8, 0x85, 0x8a, 0xde, 0x92, 0xe1, 0xbc, },
 | 
					    { 0xc8, 0xce, 0x5c, 0xcd, 0x8c, 0x03, 0x0c, 0xa8, },
 | 
				
			||||||
		{ 0xf3, 0x15, 0xbb, 0x5b, 0xb8, 0x35, 0xd8, 0x17, },
 | 
					    { 0x94, 0xaf, 0x49, 0xf6, 0xc6, 0x50, 0xad, 0xb8, },
 | 
				
			||||||
		{ 0xad, 0xcf, 0x6b, 0x07, 0x63, 0x61, 0x2e, 0x2f, },
 | 
					    { 0xea, 0xb8, 0x85, 0x8a, 0xde, 0x92, 0xe1, 0xbc, },
 | 
				
			||||||
		{ 0xa5, 0xc9, 0x1d, 0xa7, 0xac, 0xaa, 0x4d, 0xde, },
 | 
					    { 0xf3, 0x15, 0xbb, 0x5b, 0xb8, 0x35, 0xd8, 0x17, },
 | 
				
			||||||
		{ 0x71, 0x65, 0x95, 0x87, 0x66, 0x50, 0xa2, 0xa6, },
 | 
					    { 0xad, 0xcf, 0x6b, 0x07, 0x63, 0x61, 0x2e, 0x2f, },
 | 
				
			||||||
		{ 0x28, 0xef, 0x49, 0x5c, 0x53, 0xa3, 0x87, 0xad, },
 | 
					    { 0xa5, 0xc9, 0x1d, 0xa7, 0xac, 0xaa, 0x4d, 0xde, },
 | 
				
			||||||
		{ 0x42, 0xc3, 0x41, 0xd8, 0xfa, 0x92, 0xd8, 0x32, },
 | 
					    { 0x71, 0x65, 0x95, 0x87, 0x66, 0x50, 0xa2, 0xa6, },
 | 
				
			||||||
		{ 0xce, 0x7c, 0xf2, 0x72, 0x2f, 0x51, 0x27, 0x71, },
 | 
					    { 0x28, 0xef, 0x49, 0x5c, 0x53, 0xa3, 0x87, 0xad, },
 | 
				
			||||||
		{ 0xe3, 0x78, 0x59, 0xf9, 0x46, 0x23, 0xf3, 0xa7, },
 | 
					    { 0x42, 0xc3, 0x41, 0xd8, 0xfa, 0x92, 0xd8, 0x32, },
 | 
				
			||||||
		{ 0x38, 0x12, 0x05, 0xbb, 0x1a, 0xb0, 0xe0, 0x12, },
 | 
					    { 0xce, 0x7c, 0xf2, 0x72, 0x2f, 0x51, 0x27, 0x71, },
 | 
				
			||||||
		{ 0xae, 0x97, 0xa1, 0x0f, 0xd4, 0x34, 0xe0, 0x15, },
 | 
					    { 0xe3, 0x78, 0x59, 0xf9, 0x46, 0x23, 0xf3, 0xa7, },
 | 
				
			||||||
		{ 0xb4, 0xa3, 0x15, 0x08, 0xbe, 0xff, 0x4d, 0x31, },
 | 
					    { 0x38, 0x12, 0x05, 0xbb, 0x1a, 0xb0, 0xe0, 0x12, },
 | 
				
			||||||
		{ 0x81, 0x39, 0x62, 0x29, 0xf0, 0x90, 0x79, 0x02, },
 | 
					    { 0xae, 0x97, 0xa1, 0x0f, 0xd4, 0x34, 0xe0, 0x15, },
 | 
				
			||||||
		{ 0x4d, 0x0c, 0xf4, 0x9e, 0xe5, 0xd4, 0xdc, 0xca, },
 | 
					    { 0xb4, 0xa3, 0x15, 0x08, 0xbe, 0xff, 0x4d, 0x31, },
 | 
				
			||||||
		{ 0x5c, 0x73, 0x33, 0x6a, 0x76, 0xd8, 0xbf, 0x9a, },
 | 
					    { 0x81, 0x39, 0x62, 0x29, 0xf0, 0x90, 0x79, 0x02, },
 | 
				
			||||||
		{ 0xd0, 0xa7, 0x04, 0x53, 0x6b, 0xa9, 0x3e, 0x0e, },
 | 
					    { 0x4d, 0x0c, 0xf4, 0x9e, 0xe5, 0xd4, 0xdc, 0xca, },
 | 
				
			||||||
		{ 0x92, 0x59, 0x58, 0xfc, 0xd6, 0x42, 0x0c, 0xad, },
 | 
					    { 0x5c, 0x73, 0x33, 0x6a, 0x76, 0xd8, 0xbf, 0x9a, },
 | 
				
			||||||
		{ 0xa9, 0x15, 0xc2, 0x9b, 0xc8, 0x06, 0x73, 0x18, },
 | 
					    { 0xd0, 0xa7, 0x04, 0x53, 0x6b, 0xa9, 0x3e, 0x0e, },
 | 
				
			||||||
		{ 0x95, 0x2b, 0x79, 0xf3, 0xbc, 0x0a, 0xa6, 0xd4, },
 | 
					    { 0x92, 0x59, 0x58, 0xfc, 0xd6, 0x42, 0x0c, 0xad, },
 | 
				
			||||||
		{ 0xf2, 0x1d, 0xf2, 0xe4, 0x1d, 0x45, 0x35, 0xf9, },
 | 
					    { 0xa9, 0x15, 0xc2, 0x9b, 0xc8, 0x06, 0x73, 0x18, },
 | 
				
			||||||
		{ 0x87, 0x57, 0x75, 0x19, 0x04, 0x8f, 0x53, 0xa9, },
 | 
					    { 0x95, 0x2b, 0x79, 0xf3, 0xbc, 0x0a, 0xa6, 0xd4, },
 | 
				
			||||||
		{ 0x10, 0xa5, 0x6c, 0xf5, 0xdf, 0xcd, 0x9a, 0xdb, },
 | 
					    { 0xf2, 0x1d, 0xf2, 0xe4, 0x1d, 0x45, 0x35, 0xf9, },
 | 
				
			||||||
		{ 0xeb, 0x75, 0x09, 0x5c, 0xcd, 0x98, 0x6c, 0xd0, },
 | 
					    { 0x87, 0x57, 0x75, 0x19, 0x04, 0x8f, 0x53, 0xa9, },
 | 
				
			||||||
		{ 0x51, 0xa9, 0xcb, 0x9e, 0xcb, 0xa3, 0x12, 0xe6, },
 | 
					    { 0x10, 0xa5, 0x6c, 0xf5, 0xdf, 0xcd, 0x9a, 0xdb, },
 | 
				
			||||||
		{ 0x96, 0xaf, 0xad, 0xfc, 0x2c, 0xe6, 0x66, 0xc7, },
 | 
					    { 0xeb, 0x75, 0x09, 0x5c, 0xcd, 0x98, 0x6c, 0xd0, },
 | 
				
			||||||
		{ 0x72, 0xfe, 0x52, 0x97, 0x5a, 0x43, 0x64, 0xee, },
 | 
					    { 0x51, 0xa9, 0xcb, 0x9e, 0xcb, 0xa3, 0x12, 0xe6, },
 | 
				
			||||||
		{ 0x5a, 0x16, 0x45, 0xb2, 0x76, 0xd5, 0x92, 0xa1, },
 | 
					    { 0x96, 0xaf, 0xad, 0xfc, 0x2c, 0xe6, 0x66, 0xc7, },
 | 
				
			||||||
		{ 0xb2, 0x74, 0xcb, 0x8e, 0xbf, 0x87, 0x87, 0x0a, },
 | 
					    { 0x72, 0xfe, 0x52, 0x97, 0x5a, 0x43, 0x64, 0xee, },
 | 
				
			||||||
		{ 0x6f, 0x9b, 0xb4, 0x20, 0x3d, 0xe7, 0xb3, 0x81, },
 | 
					    { 0x5a, 0x16, 0x45, 0xb2, 0x76, 0xd5, 0x92, 0xa1, },
 | 
				
			||||||
		{ 0xea, 0xec, 0xb2, 0xa3, 0x0b, 0x22, 0xa8, 0x7f, },
 | 
					    { 0xb2, 0x74, 0xcb, 0x8e, 0xbf, 0x87, 0x87, 0x0a, },
 | 
				
			||||||
		{ 0x99, 0x24, 0xa4, 0x3c, 0xc1, 0x31, 0x57, 0x24, },
 | 
					    { 0x6f, 0x9b, 0xb4, 0x20, 0x3d, 0xe7, 0xb3, 0x81, },
 | 
				
			||||||
		{ 0xbd, 0x83, 0x8d, 0x3a, 0xaf, 0xbf, 0x8d, 0xb7, },
 | 
					    { 0xea, 0xec, 0xb2, 0xa3, 0x0b, 0x22, 0xa8, 0x7f, },
 | 
				
			||||||
		{ 0x0b, 0x1a, 0x2a, 0x32, 0x65, 0xd5, 0x1a, 0xea, },
 | 
					    { 0x99, 0x24, 0xa4, 0x3c, 0xc1, 0x31, 0x57, 0x24, },
 | 
				
			||||||
		{ 0x13, 0x50, 0x79, 0xa3, 0x23, 0x1c, 0xe6, 0x60, },
 | 
					    { 0xbd, 0x83, 0x8d, 0x3a, 0xaf, 0xbf, 0x8d, 0xb7, },
 | 
				
			||||||
		{ 0x93, 0x2b, 0x28, 0x46, 0xe4, 0xd7, 0x06, 0x66, },
 | 
					    { 0x0b, 0x1a, 0x2a, 0x32, 0x65, 0xd5, 0x1a, 0xea, },
 | 
				
			||||||
		{ 0xe1, 0x91, 0x5f, 0x5c, 0xb1, 0xec, 0xa4, 0x6c, },
 | 
					    { 0x13, 0x50, 0x79, 0xa3, 0x23, 0x1c, 0xe6, 0x60, },
 | 
				
			||||||
		{ 0xf3, 0x25, 0x96, 0x5c, 0xa1, 0x6d, 0x62, 0x9f, },
 | 
					    { 0x93, 0x2b, 0x28, 0x46, 0xe4, 0xd7, 0x06, 0x66, },
 | 
				
			||||||
		{ 0x57, 0x5f, 0xf2, 0x8e, 0x60, 0x38, 0x1b, 0xe5, },
 | 
					    { 0xe1, 0x91, 0x5f, 0x5c, 0xb1, 0xec, 0xa4, 0x6c, },
 | 
				
			||||||
		{ 0x72, 0x45, 0x06, 0xeb, 0x4c, 0x32, 0x8a, 0x95, }
 | 
					    { 0xf3, 0x25, 0x96, 0x5c, 0xa1, 0x6d, 0x62, 0x9f, },
 | 
				
			||||||
	};
 | 
					    { 0x57, 0x5f, 0xf2, 0x8e, 0x60, 0x38, 0x1b, 0xe5, },
 | 
				
			||||||
	unsigned char in[64];
 | 
					    { 0x72, 0x45, 0x06, 0xeb, 0x4c, 0x32, 0x8a, 0x95, }
 | 
				
			||||||
	struct sipkey k;
 | 
					  };
 | 
				
			||||||
	size_t i;
 | 
					  /* clang-format on */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sip_tokey(&k, "\000\001\002\003\004\005\006\007\010\011"
 | 
					  unsigned char in[64];
 | 
				
			||||||
			"\012\013\014\015\016\017");
 | 
					  struct sipkey k;
 | 
				
			||||||
 | 
					  size_t i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < sizeof in; ++i) {
 | 
					  sip_tokey(&k, "\000\001\002\003\004\005\006\007\010\011"
 | 
				
			||||||
		in[i] = (unsigned char)i;
 | 
					                "\012\013\014\015\016\017");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (siphash24(in, i, &k) != SIP_U8TO64_LE(vectors[i]))
 | 
					  for (i = 0; i < sizeof in; ++i) {
 | 
				
			||||||
			return 0;
 | 
					    in[i] = (unsigned char)i;
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 1;
 | 
					    if (siphash24(in, i, &k) != SIP_U8TO64_LE(vectors[i]))
 | 
				
			||||||
 | 
					      return 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return 1;
 | 
				
			||||||
} /* sip24_valid() */
 | 
					} /* sip24_valid() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef SIPHASH_MAIN
 | 
					#ifdef SIPHASH_MAIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdio.h>
 | 
					#  include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void) {
 | 
					int
 | 
				
			||||||
	const int ok = sip24_valid();
 | 
					main(void) {
 | 
				
			||||||
 | 
					  const int ok = sip24_valid();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ok)
 | 
					  if (ok)
 | 
				
			||||||
		puts("OK");
 | 
					    puts("OK");
 | 
				
			||||||
	else
 | 
					  else
 | 
				
			||||||
		puts("FAIL");
 | 
					    puts("FAIL");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return !ok;
 | 
					  return ! ok;
 | 
				
			||||||
} /* main() */
 | 
					} /* main() */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* SIPHASH_MAIN */
 | 
					#endif /* SIPHASH_MAIN */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* SIPHASH_H */
 | 
					#endif /* SIPHASH_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,34 +31,34 @@
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
					    /* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
 | 
				
			||||||
/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
					    /* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
 | 
				
			||||||
/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
					    /* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
				
			||||||
/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
					    /* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
				
			||||||
/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
					    /* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
				
			||||||
/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
					    /* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
 | 
				
			||||||
/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4,
 | 
					    /* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4,
 | 
				
			||||||
/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
					    /* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
 | 
				
			||||||
/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM,
 | 
					    /* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,20 +40,17 @@
 | 
				
			||||||
#include <memory.h>
 | 
					#include <memory.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(HAVE_EXPAT_CONFIG_H) /* e.g. MinGW */
 | 
				
			||||||
 | 
					#  include <expat_config.h>
 | 
				
			||||||
 | 
					#else /* !defined(HAVE_EXPAT_CONFIG_H) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(HAVE_EXPAT_CONFIG_H)  /* e.g. MinGW */
 | 
					#  define XML_NS 1
 | 
				
			||||||
# include <expat_config.h>
 | 
					#  define XML_DTD 1
 | 
				
			||||||
#else  /* !defined(HAVE_EXPAT_CONFIG_H) */
 | 
					#  define XML_CONTEXT_BYTES 1024
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define XML_NS 1
 | 
					 | 
				
			||||||
#define XML_DTD 1
 | 
					 | 
				
			||||||
#define XML_CONTEXT_BYTES 1024
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* we will assume all Windows platforms are little endian */
 | 
					/* we will assume all Windows platforms are little endian */
 | 
				
			||||||
#define BYTEORDER 1234
 | 
					#  define BYTEORDER 1234
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* !defined(HAVE_EXPAT_CONFIG_H) */
 | 
					#endif /* !defined(HAVE_EXPAT_CONFIG_H) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* ndef WINCONFIG_H */
 | 
					#endif /* ndef WINCONFIG_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -36,7 +36,7 @@
 | 
				
			||||||
#ifdef __VMS
 | 
					#ifdef __VMS
 | 
				
			||||||
/*      0        1         2         3      0        1         2         3
 | 
					/*      0        1         2         3      0        1         2         3
 | 
				
			||||||
        1234567890123456789012345678901     1234567890123456789012345678901 */
 | 
					        1234567890123456789012345678901     1234567890123456789012345678901 */
 | 
				
			||||||
#define XmlPrologStateInitExternalEntity    XmlPrologStateInitExternalEnt
 | 
					#  define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "xmltok.h"
 | 
					#include "xmltok.h"
 | 
				
			||||||
| 
						 | 
					@ -113,11 +113,8 @@ enum {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct prolog_state {
 | 
					typedef struct prolog_state {
 | 
				
			||||||
  int (PTRCALL *handler) (struct prolog_state *state,
 | 
					  int(PTRCALL *handler)(struct prolog_state *state, int tok, const char *ptr,
 | 
				
			||||||
                          int tok,
 | 
					                        const char *end, const ENCODING *enc);
 | 
				
			||||||
                          const char *ptr,
 | 
					 | 
				
			||||||
                          const char *end,
 | 
					 | 
				
			||||||
                          const ENCODING *enc);
 | 
					 | 
				
			||||||
  unsigned level;
 | 
					  unsigned level;
 | 
				
			||||||
  int role_none;
 | 
					  int role_none;
 | 
				
			||||||
#ifdef XML_DTD
 | 
					#ifdef XML_DTD
 | 
				
			||||||
| 
						 | 
					@ -132,8 +129,8 @@ void XmlPrologStateInit(PROLOG_STATE *);
 | 
				
			||||||
void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
 | 
					void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
 | 
				
			||||||
#endif /* XML_DTD */
 | 
					#endif /* XML_DTD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlTokenRole(state, tok, ptr, end, enc) \
 | 
					#define XmlTokenRole(state, tok, ptr, end, enc)                                \
 | 
				
			||||||
 (((state)->handler)(state, tok, ptr, end, enc))
 | 
					  (((state)->handler)(state, tok, ptr, end, enc))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -38,16 +38,18 @@ extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The following token may be returned by XmlContentTok */
 | 
					/* The following token may be returned by XmlContentTok */
 | 
				
			||||||
#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
 | 
					#define XML_TOK_TRAILING_RSQB                                                  \
 | 
				
			||||||
                                    start of illegal ]]> sequence */
 | 
					  -5 /* ] or ]] at the end of the scan; might be                               \
 | 
				
			||||||
 | 
					        start of illegal ]]> sequence */
 | 
				
			||||||
/* The following tokens may be returned by both XmlPrologTok and
 | 
					/* The following tokens may be returned by both XmlPrologTok and
 | 
				
			||||||
   XmlContentTok.
 | 
					   XmlContentTok.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define XML_TOK_NONE -4          /* The string to be scanned is empty */
 | 
					#define XML_TOK_NONE -4 /* The string to be scanned is empty */
 | 
				
			||||||
#define XML_TOK_TRAILING_CR -3   /* A CR at the end of the scan;
 | 
					#define XML_TOK_TRAILING_CR                                                    \
 | 
				
			||||||
                                    might be part of CRLF sequence */
 | 
					  -3                            /* A CR at the end of the scan;                \
 | 
				
			||||||
#define XML_TOK_PARTIAL_CHAR -2  /* only part of a multibyte sequence */
 | 
					                                   might be part of CRLF sequence */
 | 
				
			||||||
#define XML_TOK_PARTIAL -1       /* only part of a token */
 | 
					#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */
 | 
				
			||||||
 | 
					#define XML_TOK_PARTIAL -1      /* only part of a token */
 | 
				
			||||||
#define XML_TOK_INVALID 0
 | 
					#define XML_TOK_INVALID 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The following tokens are returned by XmlContentTok; some are also
 | 
					/* The following tokens are returned by XmlContentTok; some are also
 | 
				
			||||||
| 
						 | 
					@ -62,24 +64,24 @@ extern "C" {
 | 
				
			||||||
#define XML_TOK_DATA_NEWLINE 7
 | 
					#define XML_TOK_DATA_NEWLINE 7
 | 
				
			||||||
#define XML_TOK_CDATA_SECT_OPEN 8
 | 
					#define XML_TOK_CDATA_SECT_OPEN 8
 | 
				
			||||||
#define XML_TOK_ENTITY_REF 9
 | 
					#define XML_TOK_ENTITY_REF 9
 | 
				
			||||||
#define XML_TOK_CHAR_REF 10               /* numeric character reference */
 | 
					#define XML_TOK_CHAR_REF 10 /* numeric character reference */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The following tokens may be returned by both XmlPrologTok and
 | 
					/* The following tokens may be returned by both XmlPrologTok and
 | 
				
			||||||
   XmlContentTok.
 | 
					   XmlContentTok.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define XML_TOK_PI 11                     /* processing instruction */
 | 
					#define XML_TOK_PI 11       /* processing instruction */
 | 
				
			||||||
#define XML_TOK_XML_DECL 12               /* XML decl or text decl */
 | 
					#define XML_TOK_XML_DECL 12 /* XML decl or text decl */
 | 
				
			||||||
#define XML_TOK_COMMENT 13
 | 
					#define XML_TOK_COMMENT 13
 | 
				
			||||||
#define XML_TOK_BOM 14                    /* Byte order mark */
 | 
					#define XML_TOK_BOM 14 /* Byte order mark */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The following tokens are returned only by XmlPrologTok */
 | 
					/* The following tokens are returned only by XmlPrologTok */
 | 
				
			||||||
#define XML_TOK_PROLOG_S 15
 | 
					#define XML_TOK_PROLOG_S 15
 | 
				
			||||||
#define XML_TOK_DECL_OPEN 16              /* <!foo */
 | 
					#define XML_TOK_DECL_OPEN 16  /* <!foo */
 | 
				
			||||||
#define XML_TOK_DECL_CLOSE 17             /* > */
 | 
					#define XML_TOK_DECL_CLOSE 17 /* > */
 | 
				
			||||||
#define XML_TOK_NAME 18
 | 
					#define XML_TOK_NAME 18
 | 
				
			||||||
#define XML_TOK_NMTOKEN 19
 | 
					#define XML_TOK_NMTOKEN 19
 | 
				
			||||||
#define XML_TOK_POUND_NAME 20             /* #name */
 | 
					#define XML_TOK_POUND_NAME 20 /* #name */
 | 
				
			||||||
#define XML_TOK_OR 21                     /* | */
 | 
					#define XML_TOK_OR 21         /* | */
 | 
				
			||||||
#define XML_TOK_PERCENT 22
 | 
					#define XML_TOK_PERCENT 22
 | 
				
			||||||
#define XML_TOK_OPEN_PAREN 23
 | 
					#define XML_TOK_OPEN_PAREN 23
 | 
				
			||||||
#define XML_TOK_CLOSE_PAREN 24
 | 
					#define XML_TOK_CLOSE_PAREN 24
 | 
				
			||||||
| 
						 | 
					@ -90,14 +92,14 @@ extern "C" {
 | 
				
			||||||
#define XML_TOK_INSTANCE_START 29
 | 
					#define XML_TOK_INSTANCE_START 29
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The following occur only in element type declarations */
 | 
					/* The following occur only in element type declarations */
 | 
				
			||||||
#define XML_TOK_NAME_QUESTION 30          /* name? */
 | 
					#define XML_TOK_NAME_QUESTION 30        /* name? */
 | 
				
			||||||
#define XML_TOK_NAME_ASTERISK 31          /* name* */
 | 
					#define XML_TOK_NAME_ASTERISK 31        /* name* */
 | 
				
			||||||
#define XML_TOK_NAME_PLUS 32              /* name+ */
 | 
					#define XML_TOK_NAME_PLUS 32            /* name+ */
 | 
				
			||||||
#define XML_TOK_COND_SECT_OPEN 33         /* <![ */
 | 
					#define XML_TOK_COND_SECT_OPEN 33       /* <![ */
 | 
				
			||||||
#define XML_TOK_COND_SECT_CLOSE 34        /* ]]> */
 | 
					#define XML_TOK_COND_SECT_CLOSE 34      /* ]]> */
 | 
				
			||||||
#define XML_TOK_CLOSE_PAREN_QUESTION 35   /* )? */
 | 
					#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */
 | 
				
			||||||
#define XML_TOK_CLOSE_PAREN_ASTERISK 36   /* )* */
 | 
					#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */
 | 
				
			||||||
#define XML_TOK_CLOSE_PAREN_PLUS 37       /* )+ */
 | 
					#define XML_TOK_CLOSE_PAREN_PLUS 37     /* )+ */
 | 
				
			||||||
#define XML_TOK_COMMA 38
 | 
					#define XML_TOK_COMMA 38
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The following token is returned only by XmlAttributeValueTok */
 | 
					/* The following token is returned only by XmlAttributeValueTok */
 | 
				
			||||||
| 
						 | 
					@ -112,20 +114,20 @@ extern "C" {
 | 
				
			||||||
#define XML_TOK_PREFIXED_NAME 41
 | 
					#define XML_TOK_PREFIXED_NAME 41
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XML_DTD
 | 
					#ifdef XML_DTD
 | 
				
			||||||
#define XML_TOK_IGNORE_SECT 42
 | 
					#  define XML_TOK_IGNORE_SECT 42
 | 
				
			||||||
#endif /* XML_DTD */
 | 
					#endif /* XML_DTD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XML_DTD
 | 
					#ifdef XML_DTD
 | 
				
			||||||
#define XML_N_STATES 4
 | 
					#  define XML_N_STATES 4
 | 
				
			||||||
#else /* not XML_DTD */
 | 
					#else /* not XML_DTD */
 | 
				
			||||||
#define XML_N_STATES 3
 | 
					#  define XML_N_STATES 3
 | 
				
			||||||
#endif /* not XML_DTD */
 | 
					#endif /* not XML_DTD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XML_PROLOG_STATE 0
 | 
					#define XML_PROLOG_STATE 0
 | 
				
			||||||
#define XML_CONTENT_STATE 1
 | 
					#define XML_CONTENT_STATE 1
 | 
				
			||||||
#define XML_CDATA_SECTION_STATE 2
 | 
					#define XML_CDATA_SECTION_STATE 2
 | 
				
			||||||
#ifdef XML_DTD
 | 
					#ifdef XML_DTD
 | 
				
			||||||
#define XML_IGNORE_SECTION_STATE 3
 | 
					#  define XML_IGNORE_SECTION_STATE 3
 | 
				
			||||||
#endif /* XML_DTD */
 | 
					#endif /* XML_DTD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XML_N_LITERAL_TYPES 2
 | 
					#define XML_N_LITERAL_TYPES 2
 | 
				
			||||||
| 
						 | 
					@ -153,52 +155,41 @@ typedef struct {
 | 
				
			||||||
struct encoding;
 | 
					struct encoding;
 | 
				
			||||||
typedef struct encoding ENCODING;
 | 
					typedef struct encoding ENCODING;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef int (PTRCALL *SCANNER)(const ENCODING *,
 | 
					typedef int(PTRCALL *SCANNER)(const ENCODING *, const char *, const char *,
 | 
				
			||||||
                               const char *,
 | 
					                              const char **);
 | 
				
			||||||
                               const char *,
 | 
					 | 
				
			||||||
                               const char **);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum XML_Convert_Result {
 | 
					enum XML_Convert_Result {
 | 
				
			||||||
  XML_CONVERT_COMPLETED = 0,
 | 
					  XML_CONVERT_COMPLETED = 0,
 | 
				
			||||||
  XML_CONVERT_INPUT_INCOMPLETE = 1,
 | 
					  XML_CONVERT_INPUT_INCOMPLETE = 1,
 | 
				
			||||||
  XML_CONVERT_OUTPUT_EXHAUSTED = 2  /* and therefore potentially input remaining as well */
 | 
					  XML_CONVERT_OUTPUT_EXHAUSTED
 | 
				
			||||||
 | 
					  = 2 /* and therefore potentially input remaining as well */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct encoding {
 | 
					struct encoding {
 | 
				
			||||||
  SCANNER scanners[XML_N_STATES];
 | 
					  SCANNER scanners[XML_N_STATES];
 | 
				
			||||||
  SCANNER literalScanners[XML_N_LITERAL_TYPES];
 | 
					  SCANNER literalScanners[XML_N_LITERAL_TYPES];
 | 
				
			||||||
  int (PTRCALL *nameMatchesAscii)(const ENCODING *,
 | 
					  int(PTRCALL *nameMatchesAscii)(const ENCODING *, const char *, const char *,
 | 
				
			||||||
                                  const char *,
 | 
					                                 const char *);
 | 
				
			||||||
                                  const char *,
 | 
					  int(PTRFASTCALL *nameLength)(const ENCODING *, const char *);
 | 
				
			||||||
                                  const char *);
 | 
					 | 
				
			||||||
  int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
 | 
					 | 
				
			||||||
  const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
 | 
					  const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
 | 
				
			||||||
  int (PTRCALL *getAtts)(const ENCODING *enc,
 | 
					  int(PTRCALL *getAtts)(const ENCODING *enc, const char *ptr, int attsMax,
 | 
				
			||||||
                         const char *ptr,
 | 
					                        ATTRIBUTE *atts);
 | 
				
			||||||
                         int attsMax,
 | 
					  int(PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
 | 
				
			||||||
                         ATTRIBUTE *atts);
 | 
					  int(PTRCALL *predefinedEntityName)(const ENCODING *, const char *,
 | 
				
			||||||
  int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
 | 
					                                     const char *);
 | 
				
			||||||
  int (PTRCALL *predefinedEntityName)(const ENCODING *,
 | 
					  void(PTRCALL *updatePosition)(const ENCODING *, const char *ptr,
 | 
				
			||||||
                                      const char *,
 | 
					                                const char *end, POSITION *);
 | 
				
			||||||
                                      const char *);
 | 
					  int(PTRCALL *isPublicId)(const ENCODING *enc, const char *ptr,
 | 
				
			||||||
  void (PTRCALL *updatePosition)(const ENCODING *,
 | 
					                           const char *end, const char **badPtr);
 | 
				
			||||||
                                 const char *ptr,
 | 
					  enum XML_Convert_Result(PTRCALL *utf8Convert)(const ENCODING *enc,
 | 
				
			||||||
                                 const char *end,
 | 
					                                                const char **fromP,
 | 
				
			||||||
                                 POSITION *);
 | 
					                                                const char *fromLim, char **toP,
 | 
				
			||||||
  int (PTRCALL *isPublicId)(const ENCODING *enc,
 | 
					                                                const char *toLim);
 | 
				
			||||||
                            const char *ptr,
 | 
					  enum XML_Convert_Result(PTRCALL *utf16Convert)(const ENCODING *enc,
 | 
				
			||||||
                            const char *end,
 | 
					                                                 const char **fromP,
 | 
				
			||||||
                            const char **badPtr);
 | 
					                                                 const char *fromLim,
 | 
				
			||||||
  enum XML_Convert_Result (PTRCALL *utf8Convert)(const ENCODING *enc,
 | 
					                                                 unsigned short **toP,
 | 
				
			||||||
                              const char **fromP,
 | 
					                                                 const unsigned short *toLim);
 | 
				
			||||||
                              const char *fromLim,
 | 
					 | 
				
			||||||
                              char **toP,
 | 
					 | 
				
			||||||
                              const char *toLim);
 | 
					 | 
				
			||||||
  enum XML_Convert_Result (PTRCALL *utf16Convert)(const ENCODING *enc,
 | 
					 | 
				
			||||||
                               const char **fromP,
 | 
					 | 
				
			||||||
                               const char *fromLim,
 | 
					 | 
				
			||||||
                               unsigned short **toP,
 | 
					 | 
				
			||||||
                               const unsigned short *toLim);
 | 
					 | 
				
			||||||
  int minBytesPerChar;
 | 
					  int minBytesPerChar;
 | 
				
			||||||
  char isUtf8;
 | 
					  char isUtf8;
 | 
				
			||||||
  char isUtf16;
 | 
					  char isUtf16;
 | 
				
			||||||
| 
						 | 
					@ -225,66 +216,62 @@ struct encoding {
 | 
				
			||||||
   the prolog outside literals, comments and processing instructions.
 | 
					   the prolog outside literals, comments and processing instructions.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define XmlTok(enc, state, ptr, end, nextTokPtr)                               \
 | 
				
			||||||
#define XmlTok(enc, state, ptr, end, nextTokPtr) \
 | 
					 | 
				
			||||||
  (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
 | 
					  (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
 | 
					#define XmlPrologTok(enc, ptr, end, nextTokPtr)                                \
 | 
				
			||||||
   XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
 | 
					  XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlContentTok(enc, ptr, end, nextTokPtr) \
 | 
					#define XmlContentTok(enc, ptr, end, nextTokPtr)                               \
 | 
				
			||||||
   XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
 | 
					  XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
 | 
					#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr)                          \
 | 
				
			||||||
   XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
 | 
					  XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XML_DTD
 | 
					#ifdef XML_DTD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
 | 
					#  define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr)                       \
 | 
				
			||||||
   XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
 | 
					    XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* XML_DTD */
 | 
					#endif /* XML_DTD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is used for performing a 2nd-level tokenization on the content
 | 
					/* This is used for performing a 2nd-level tokenization on the content
 | 
				
			||||||
   of a literal that has already been returned by XmlTok.
 | 
					   of a literal that has already been returned by XmlTok.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
 | 
					#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr)                  \
 | 
				
			||||||
  (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
 | 
					  (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
 | 
					#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr)                        \
 | 
				
			||||||
   XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
 | 
					  XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
 | 
					#define XmlEntityValueTok(enc, ptr, end, nextTokPtr)                           \
 | 
				
			||||||
   XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
 | 
					  XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
 | 
					#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2)                             \
 | 
				
			||||||
  (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
 | 
					  (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlNameLength(enc, ptr) \
 | 
					#define XmlNameLength(enc, ptr) (((enc)->nameLength)(enc, ptr))
 | 
				
			||||||
  (((enc)->nameLength)(enc, ptr))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlSkipS(enc, ptr) \
 | 
					#define XmlSkipS(enc, ptr) (((enc)->skipS)(enc, ptr))
 | 
				
			||||||
  (((enc)->skipS)(enc, ptr))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlGetAttributes(enc, ptr, attsMax, atts) \
 | 
					#define XmlGetAttributes(enc, ptr, attsMax, atts)                              \
 | 
				
			||||||
  (((enc)->getAtts)(enc, ptr, attsMax, atts))
 | 
					  (((enc)->getAtts)(enc, ptr, attsMax, atts))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlCharRefNumber(enc, ptr) \
 | 
					#define XmlCharRefNumber(enc, ptr) (((enc)->charRefNumber)(enc, ptr))
 | 
				
			||||||
  (((enc)->charRefNumber)(enc, ptr))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlPredefinedEntityName(enc, ptr, end) \
 | 
					#define XmlPredefinedEntityName(enc, ptr, end)                                 \
 | 
				
			||||||
  (((enc)->predefinedEntityName)(enc, ptr, end))
 | 
					  (((enc)->predefinedEntityName)(enc, ptr, end))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlUpdatePosition(enc, ptr, end, pos) \
 | 
					#define XmlUpdatePosition(enc, ptr, end, pos)                                  \
 | 
				
			||||||
  (((enc)->updatePosition)(enc, ptr, end, pos))
 | 
					  (((enc)->updatePosition)(enc, ptr, end, pos))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlIsPublicId(enc, ptr, end, badPtr) \
 | 
					#define XmlIsPublicId(enc, ptr, end, badPtr)                                   \
 | 
				
			||||||
  (((enc)->isPublicId)(enc, ptr, end, badPtr))
 | 
					  (((enc)->isPublicId)(enc, ptr, end, badPtr))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
 | 
					#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim)                        \
 | 
				
			||||||
  (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
 | 
					  (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
 | 
					#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim)                       \
 | 
				
			||||||
  (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
 | 
					  (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
| 
						 | 
					@ -292,16 +279,11 @@ typedef struct {
 | 
				
			||||||
  const ENCODING **encPtr;
 | 
					  const ENCODING **encPtr;
 | 
				
			||||||
} INIT_ENCODING;
 | 
					} INIT_ENCODING;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int XmlParseXmlDecl(int isGeneralTextEntity,
 | 
					int XmlParseXmlDecl(int isGeneralTextEntity, const ENCODING *enc,
 | 
				
			||||||
                    const ENCODING *enc,
 | 
					                    const char *ptr, const char *end, const char **badPtr,
 | 
				
			||||||
                    const char *ptr,
 | 
					                    const char **versionPtr, const char **versionEndPtr,
 | 
				
			||||||
                    const char *end,
 | 
					 | 
				
			||||||
                    const char **badPtr,
 | 
					 | 
				
			||||||
                    const char **versionPtr,
 | 
					 | 
				
			||||||
                    const char **versionEndPtr,
 | 
					 | 
				
			||||||
                    const char **encodingNamePtr,
 | 
					                    const char **encodingNamePtr,
 | 
				
			||||||
                    const ENCODING **namedEncodingPtr,
 | 
					                    const ENCODING **namedEncodingPtr, int *standalonePtr);
 | 
				
			||||||
                    int *standalonePtr);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
 | 
					int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
 | 
				
			||||||
const ENCODING *XmlGetUtf8InternalEncoding(void);
 | 
					const ENCODING *XmlGetUtf8InternalEncoding(void);
 | 
				
			||||||
| 
						 | 
					@ -310,34 +292,22 @@ int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
 | 
				
			||||||
int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
 | 
					int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
 | 
				
			||||||
int XmlSizeOfUnknownEncoding(void);
 | 
					int XmlSizeOfUnknownEncoding(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef int(XMLCALL *CONVERTER)(void *userData, const char *p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
 | 
					ENCODING *XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert,
 | 
				
			||||||
 | 
					                                 void *userData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENCODING *
 | 
					int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc,
 | 
				
			||||||
XmlInitUnknownEncoding(void *mem,
 | 
					                      const char *ptr, const char *end, const char **badPtr,
 | 
				
			||||||
                       int *table,
 | 
					                      const char **versionPtr, const char **versionEndPtr,
 | 
				
			||||||
                       CONVERTER convert,
 | 
					 | 
				
			||||||
                       void *userData);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int XmlParseXmlDeclNS(int isGeneralTextEntity,
 | 
					 | 
				
			||||||
                      const ENCODING *enc,
 | 
					 | 
				
			||||||
                      const char *ptr,
 | 
					 | 
				
			||||||
                      const char *end,
 | 
					 | 
				
			||||||
                      const char **badPtr,
 | 
					 | 
				
			||||||
                      const char **versionPtr,
 | 
					 | 
				
			||||||
                      const char **versionEndPtr,
 | 
					 | 
				
			||||||
                      const char **encodingNamePtr,
 | 
					                      const char **encodingNamePtr,
 | 
				
			||||||
                      const ENCODING **namedEncodingPtr,
 | 
					                      const ENCODING **namedEncodingPtr, int *standalonePtr);
 | 
				
			||||||
                      int *standalonePtr);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
 | 
					int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
 | 
				
			||||||
const ENCODING *XmlGetUtf8InternalEncodingNS(void);
 | 
					const ENCODING *XmlGetUtf8InternalEncodingNS(void);
 | 
				
			||||||
const ENCODING *XmlGetUtf16InternalEncodingNS(void);
 | 
					const ENCODING *XmlGetUtf16InternalEncodingNS(void);
 | 
				
			||||||
ENCODING *
 | 
					ENCODING *XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert,
 | 
				
			||||||
XmlInitUnknownEncodingNS(void *mem,
 | 
					                                   void *userData);
 | 
				
			||||||
                         int *table,
 | 
					 | 
				
			||||||
                         CONVERTER convert,
 | 
					 | 
				
			||||||
                         void *userData);
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -31,43 +31,43 @@
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
  BT_NONXML,
 | 
					  BT_NONXML,   /* e.g. noncharacter-FFFF */
 | 
				
			||||||
  BT_MALFORM,
 | 
					  BT_MALFORM,  /* illegal, with regard to encoding */
 | 
				
			||||||
  BT_LT,
 | 
					  BT_LT,       /* less than = "<" */
 | 
				
			||||||
  BT_AMP,
 | 
					  BT_AMP,      /* ampersand = "&" */
 | 
				
			||||||
  BT_RSQB,
 | 
					  BT_RSQB,     /* right square bracket = "[" */
 | 
				
			||||||
  BT_LEAD2,
 | 
					  BT_LEAD2,    /* lead byte of a 2-byte UTF-8 character */
 | 
				
			||||||
  BT_LEAD3,
 | 
					  BT_LEAD3,    /* lead byte of a 3-byte UTF-8 character */
 | 
				
			||||||
  BT_LEAD4,
 | 
					  BT_LEAD4,    /* lead byte of a 4-byte UTF-8 character */
 | 
				
			||||||
  BT_TRAIL,
 | 
					  BT_TRAIL,    /* trailing unit, e.g. second 16-bit unit of a 4-byte char. */
 | 
				
			||||||
  BT_CR,
 | 
					  BT_CR,       /* carriage return = "\r" */
 | 
				
			||||||
  BT_LF,
 | 
					  BT_LF,       /* line feed = "\n" */
 | 
				
			||||||
  BT_GT,
 | 
					  BT_GT,       /* greater than = ">" */
 | 
				
			||||||
  BT_QUOT,
 | 
					  BT_QUOT,     /* quotation character = "\"" */
 | 
				
			||||||
  BT_APOS,
 | 
					  BT_APOS,     /* aposthrophe = "'" */
 | 
				
			||||||
  BT_EQUALS,
 | 
					  BT_EQUALS,   /* equal sign = "=" */
 | 
				
			||||||
  BT_QUEST,
 | 
					  BT_QUEST,    /* question mark = "?" */
 | 
				
			||||||
  BT_EXCL,
 | 
					  BT_EXCL,     /* exclamation mark = "!" */
 | 
				
			||||||
  BT_SOL,
 | 
					  BT_SOL,      /* solidus, slash = "/" */
 | 
				
			||||||
  BT_SEMI,
 | 
					  BT_SEMI,     /* semicolon = ";" */
 | 
				
			||||||
  BT_NUM,
 | 
					  BT_NUM,      /* number sign = "#" */
 | 
				
			||||||
  BT_LSQB,
 | 
					  BT_LSQB,     /* left square bracket = "[" */
 | 
				
			||||||
  BT_S,
 | 
					  BT_S,        /* white space, e.g. "\t", " "[, "\r"] */
 | 
				
			||||||
  BT_NMSTRT,
 | 
					  BT_NMSTRT,   /* non-hex name start letter = "G".."Z" + "g".."z" + "_" */
 | 
				
			||||||
  BT_COLON,
 | 
					  BT_COLON,    /* colon = ":" */
 | 
				
			||||||
  BT_HEX,
 | 
					  BT_HEX,      /* hex letter = "A".."F" + "a".."f" */
 | 
				
			||||||
  BT_DIGIT,
 | 
					  BT_DIGIT,    /* digit = "0".."9" */
 | 
				
			||||||
  BT_NAME,
 | 
					  BT_NAME,     /* dot and middle dot = "." + chr(0xb7) */
 | 
				
			||||||
  BT_MINUS,
 | 
					  BT_MINUS,    /* minus = "-" */
 | 
				
			||||||
  BT_OTHER, /* known not to be a name or name start character */
 | 
					  BT_OTHER,    /* known not to be a name or name start character */
 | 
				
			||||||
  BT_NONASCII, /* might be a name or name start character */
 | 
					  BT_NONASCII, /* might be a name or name start character */
 | 
				
			||||||
  BT_PERCNT,
 | 
					  BT_PERCNT,   /* percent sign = "%" */
 | 
				
			||||||
  BT_LPAR,
 | 
					  BT_LPAR,     /* left parenthesis = "(" */
 | 
				
			||||||
  BT_RPAR,
 | 
					  BT_RPAR,     /* right parenthesis = "(" */
 | 
				
			||||||
  BT_AST,
 | 
					  BT_AST,      /* asterisk = "*" */
 | 
				
			||||||
  BT_PLUS,
 | 
					  BT_PLUS,     /* plus sign = "+" */
 | 
				
			||||||
  BT_COMMA,
 | 
					  BT_COMMA,    /* comma = "," */
 | 
				
			||||||
  BT_VERBAR
 | 
					  BT_VERBAR    /* vertical bar = "|" */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stddef.h>
 | 
					#include <stddef.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,56 +33,47 @@
 | 
				
			||||||
#ifdef XML_TOK_NS_C
 | 
					#ifdef XML_TOK_NS_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const ENCODING *
 | 
					const ENCODING *
 | 
				
			||||||
NS(XmlGetUtf8InternalEncoding)(void)
 | 
					NS(XmlGetUtf8InternalEncoding)(void) {
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  return &ns(internal_utf8_encoding).enc;
 | 
					  return &ns(internal_utf8_encoding).enc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const ENCODING *
 | 
					const ENCODING *
 | 
				
			||||||
NS(XmlGetUtf16InternalEncoding)(void)
 | 
					NS(XmlGetUtf16InternalEncoding)(void) {
 | 
				
			||||||
{
 | 
					#  if BYTEORDER == 1234
 | 
				
			||||||
#if BYTEORDER == 1234
 | 
					 | 
				
			||||||
  return &ns(internal_little2_encoding).enc;
 | 
					  return &ns(internal_little2_encoding).enc;
 | 
				
			||||||
#elif BYTEORDER == 4321
 | 
					#  elif BYTEORDER == 4321
 | 
				
			||||||
  return &ns(internal_big2_encoding).enc;
 | 
					  return &ns(internal_big2_encoding).enc;
 | 
				
			||||||
#else
 | 
					#  else
 | 
				
			||||||
  const short n = 1;
 | 
					  const short n = 1;
 | 
				
			||||||
  return (*(const char *)&n
 | 
					  return (*(const char *)&n ? &ns(internal_little2_encoding).enc
 | 
				
			||||||
          ? &ns(internal_little2_encoding).enc
 | 
					                            : &ns(internal_big2_encoding).enc);
 | 
				
			||||||
          : &ns(internal_big2_encoding).enc);
 | 
					#  endif
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const ENCODING * const NS(encodings)[] = {
 | 
					static const ENCODING *const NS(encodings)[] = {
 | 
				
			||||||
  &ns(latin1_encoding).enc,
 | 
					    &ns(latin1_encoding).enc, &ns(ascii_encoding).enc,
 | 
				
			||||||
  &ns(ascii_encoding).enc,
 | 
					    &ns(utf8_encoding).enc,   &ns(big2_encoding).enc,
 | 
				
			||||||
  &ns(utf8_encoding).enc,
 | 
					    &ns(big2_encoding).enc,   &ns(little2_encoding).enc,
 | 
				
			||||||
  &ns(big2_encoding).enc,
 | 
					    &ns(utf8_encoding).enc /* NO_ENC */
 | 
				
			||||||
  &ns(big2_encoding).enc,
 | 
					 | 
				
			||||||
  &ns(little2_encoding).enc,
 | 
					 | 
				
			||||||
  &ns(utf8_encoding).enc /* NO_ENC */
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int PTRCALL
 | 
					static int PTRCALL
 | 
				
			||||||
NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
 | 
					NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
 | 
				
			||||||
                   const char **nextTokPtr)
 | 
					                   const char **nextTokPtr) {
 | 
				
			||||||
{
 | 
					  return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE,
 | 
				
			||||||
  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
 | 
					                  ptr, end, nextTokPtr);
 | 
				
			||||||
                  XML_PROLOG_STATE, ptr, end, nextTokPtr);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int PTRCALL
 | 
					static int PTRCALL
 | 
				
			||||||
NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
 | 
					NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
 | 
				
			||||||
                    const char **nextTokPtr)
 | 
					                    const char **nextTokPtr) {
 | 
				
			||||||
{
 | 
					  return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE,
 | 
				
			||||||
  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
 | 
					                  ptr, end, nextTokPtr);
 | 
				
			||||||
                  XML_CONTENT_STATE, ptr, end, nextTokPtr);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
 | 
					NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
 | 
				
			||||||
                    const char *name)
 | 
					                    const char *name) {
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  int i = getEncodingIndex(name);
 | 
					  int i = getEncodingIndex(name);
 | 
				
			||||||
  if (i == UNKNOWN_ENC)
 | 
					  if (i == UNKNOWN_ENC)
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
| 
						 | 
					@ -96,9 +87,8 @@ NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const ENCODING *
 | 
					static const ENCODING *
 | 
				
			||||||
NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
 | 
					NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) {
 | 
				
			||||||
{
 | 
					#  define ENCODING_MAX 128
 | 
				
			||||||
#define ENCODING_MAX 128
 | 
					 | 
				
			||||||
  char buf[ENCODING_MAX];
 | 
					  char buf[ENCODING_MAX];
 | 
				
			||||||
  char *p = buf;
 | 
					  char *p = buf;
 | 
				
			||||||
  int i;
 | 
					  int i;
 | 
				
			||||||
| 
						 | 
					@ -115,28 +105,14 @@ NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
NS(XmlParseXmlDecl)(int isGeneralTextEntity,
 | 
					NS(XmlParseXmlDecl)(int isGeneralTextEntity, const ENCODING *enc,
 | 
				
			||||||
                    const ENCODING *enc,
 | 
					                    const char *ptr, const char *end, const char **badPtr,
 | 
				
			||||||
                    const char *ptr,
 | 
					                    const char **versionPtr, const char **versionEndPtr,
 | 
				
			||||||
                    const char *end,
 | 
					                    const char **encodingName, const ENCODING **encoding,
 | 
				
			||||||
                    const char **badPtr,
 | 
					                    int *standalone) {
 | 
				
			||||||
                    const char **versionPtr,
 | 
					  return doParseXmlDecl(NS(findEncoding), isGeneralTextEntity, enc, ptr, end,
 | 
				
			||||||
                    const char **versionEndPtr,
 | 
					                        badPtr, versionPtr, versionEndPtr, encodingName,
 | 
				
			||||||
                    const char **encodingName,
 | 
					                        encoding, standalone);
 | 
				
			||||||
                    const ENCODING **encoding,
 | 
					 | 
				
			||||||
                    int *standalone)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  return doParseXmlDecl(NS(findEncoding),
 | 
					 | 
				
			||||||
                        isGeneralTextEntity,
 | 
					 | 
				
			||||||
                        enc,
 | 
					 | 
				
			||||||
                        ptr,
 | 
					 | 
				
			||||||
                        end,
 | 
					 | 
				
			||||||
                        badPtr,
 | 
					 | 
				
			||||||
                        versionPtr,
 | 
					 | 
				
			||||||
                        versionEndPtr,
 | 
					 | 
				
			||||||
                        encodingName,
 | 
					 | 
				
			||||||
                        encoding,
 | 
					 | 
				
			||||||
                        standalone);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* XML_TOK_NS_C */
 | 
					#endif /* XML_TOK_NS_C */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,6 @@
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="..\Modules\_elementtree.c" />
 | 
					    <ClCompile Include="..\Modules\_elementtree.c" />
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\loadlibrary.c" />
 | 
					 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmlparse.c" />
 | 
					    <ClCompile Include="..\Modules\expat\xmlparse.c" />
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmlrole.c" />
 | 
					    <ClCompile Include="..\Modules\expat\xmlrole.c" />
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmltok.c" />
 | 
					    <ClCompile Include="..\Modules\expat\xmltok.c" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,9 +33,6 @@
 | 
				
			||||||
    <ClInclude Include="..\Modules\expat\latin1tab.h">
 | 
					    <ClInclude Include="..\Modules\expat\latin1tab.h">
 | 
				
			||||||
      <Filter>Header Files</Filter>
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
    <ClInclude Include="..\Modules\expat\loadlibrary.c">
 | 
					 | 
				
			||||||
      <Filter>Header Files</Filter>
 | 
					 | 
				
			||||||
    </ClInclude>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\Modules\expat\macconfig.h">
 | 
					    <ClInclude Include="..\Modules\expat\macconfig.h">
 | 
				
			||||||
      <Filter>Header Files</Filter>
 | 
					      <Filter>Header Files</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,7 +100,6 @@
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="..\Modules\pyexpat.c" />
 | 
					    <ClCompile Include="..\Modules\pyexpat.c" />
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\loadlibrary.c" />
 | 
					 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmlparse.c" />
 | 
					    <ClCompile Include="..\Modules\expat\xmlparse.c" />
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmlrole.c" />
 | 
					    <ClCompile Include="..\Modules\expat\xmlrole.c" />
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmltok.c" />
 | 
					    <ClCompile Include="..\Modules\expat\xmltok.c" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,9 +20,6 @@
 | 
				
			||||||
    <ClCompile Include="..\Modules\pyexpat.c">
 | 
					    <ClCompile Include="..\Modules\pyexpat.c">
 | 
				
			||||||
      <Filter>Source Files</Filter>
 | 
					      <Filter>Source Files</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\loadlibrary.c">
 | 
					 | 
				
			||||||
      <Filter>Source Files</Filter>
 | 
					 | 
				
			||||||
    </ClCompile>
 | 
					 | 
				
			||||||
    <ClCompile Include="..\Modules\expat\xmlparse.c">
 | 
					    <ClCompile Include="..\Modules\expat\xmlparse.c">
 | 
				
			||||||
      <Filter>Source Files</Filter>
 | 
					      <Filter>Source Files</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue