[Python-checkins] CVS: python/dist/src/Modules pyexpat.c,2.57,2.58

Martin v. L?wis loewis@users.sourceforge.net
Mon, 11 Feb 2002 15:27:47 -0800


Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv12582/Modules

Modified Files:
	pyexpat.c 
Log Message:
Use included Expat library. Drop support for older expat versions.


Index: pyexpat.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/pyexpat.c,v
retrieving revision 2.57
retrieving revision 2.58
diff -C2 -d -r2.57 -r2.58
*** pyexpat.c	8 Dec 2001 18:02:57 -0000	2.57
--- pyexpat.c	11 Feb 2002 23:27:45 -0000	2.58
***************
*** 7,27 ****
  #include "compile.h"
  #include "frameobject.h"
- #ifdef HAVE_EXPAT_H
  #include "expat.h"
- #ifdef XML_MAJOR_VERSION
- #define EXPAT_VERSION (0x10000 * XML_MAJOR_VERSION \
-                        + 0x100 * XML_MINOR_VERSION \
-                        + XML_MICRO_VERSION)
- #else
- /* Assume the oldest Expat that used expat.h and did not have version info */
- #define EXPAT_VERSION 0x015f00
- #endif
- #else /* !defined(HAVE_EXPAT_H) */
- #include "xmlparse.h"
- /* Assume Expat 1.1 unless told otherwise */
- #ifndef EXPAT_VERSION
- #define EXPAT_VERSION 0x010100
- #endif
- #endif /* !defined(HAVE_EXPAT_H) */
  
  #ifndef PyGC_HEAD_SIZE
--- 7,11 ----
***************
*** 53,70 ****
      NotStandalone,
      ExternalEntityRef,
- #if EXPAT_VERSION >= 0x010200
      StartDoctypeDecl,
      EndDoctypeDecl,
- #endif
- #if EXPAT_VERSION == 0x010200
-     ExternalParsedEntityDecl,
-     InternalParsedEntityDecl,
- #endif
- #if EXPAT_VERSION >= 0x015f00
      EntityDecl,
      XmlDecl,
      ElementDecl,
      AttlistDecl,
- #endif
      _DummyDecl
  };
--- 37,46 ----
***************
*** 143,234 ****
  
  
- #if EXPAT_VERSION == 0x010200
- /* Convert an array of attributes and their values into a Python dict */
- 
- static PyObject *
- conv_atts_using_string(XML_Char **atts)
- {
-     PyObject *attrs_obj = NULL;
-     XML_Char **attrs_p, **attrs_k = NULL;
-     int attrs_len;
-     PyObject *rv;
- 
-     if ((attrs_obj = PyDict_New()) == NULL) 
-         goto finally;
-     for (attrs_len = 0, attrs_p = atts; 
-          *attrs_p;
-          attrs_p++, attrs_len++) {
-         if (attrs_len % 2) {
-             rv = PyString_FromString(*attrs_p);  
-             if (!rv) {
-                 Py_DECREF(attrs_obj);
-                 attrs_obj = NULL;
-                 goto finally;
-             }
-             if (PyDict_SetItemString(attrs_obj,
-                                      (char*)*attrs_k, rv) < 0) {
-                 Py_DECREF(attrs_obj);
-                 attrs_obj = NULL;
-                 goto finally;
-             }
-             Py_DECREF(rv);
-         }
-         else 
-             attrs_k = attrs_p;
-     }
-  finally:
-     return attrs_obj;
- }
- #endif
- 
  #ifdef Py_USING_UNICODE
- #if EXPAT_VERSION == 0x010200
- static PyObject *
- conv_atts_using_unicode(XML_Char **atts)
- {
-     PyObject *attrs_obj;
-     XML_Char **attrs_p, **attrs_k = NULL;
-     int attrs_len;
- 
-     if ((attrs_obj = PyDict_New()) == NULL) 
-         goto finally;
-     for (attrs_len = 0, attrs_p = atts; 
-          *attrs_p;
-          attrs_p++, attrs_len++) {
-         if (attrs_len % 2) {
-             PyObject *attr_str, *value_str;
-             const char *p = (const char *) (*attrs_k);
-             attr_str = PyUnicode_DecodeUTF8(p, strlen(p), "strict"); 
-             if (!attr_str) {
-                 Py_DECREF(attrs_obj);
-                 attrs_obj = NULL;
-                 goto finally;
-             }
-             p = (const char *) *attrs_p;
-             value_str = PyUnicode_DecodeUTF8(p, strlen(p), "strict");
-             if (!value_str) {
-                 Py_DECREF(attrs_obj);
-                 Py_DECREF(attr_str);
-                 attrs_obj = NULL;
-                 goto finally;
-             }
-             if (PyDict_SetItem(attrs_obj, attr_str, value_str) < 0) {
-                 Py_DECREF(attrs_obj);
-                 Py_DECREF(attr_str);
-                 Py_DECREF(value_str);
-                 attrs_obj = NULL;
-                 goto finally;
-             }
-             Py_DECREF(attr_str);
-             Py_DECREF(value_str);
-         }
-         else
-             attrs_k = attrs_p;
-     }
-  finally:
-     return attrs_obj;
- }
- #endif
- 
  /* Convert a string of XML_Chars into a Unicode string.
     Returns None if str is a null pointer. */
--- 119,123 ----
***************
*** 538,542 ****
                STRING_CONV_FUNC,notationName))
  
- #if EXPAT_VERSION >= 0x015f00
  #ifndef Py_USING_UNICODE
  VOID_HANDLER(EntityDecl,
--- 427,430 ----
***************
*** 651,655 ****
                STRING_CONV_FUNC,att_type, STRING_CONV_FUNC,dflt,
                isrequired))
- #endif
  
  VOID_HANDLER(NotationDecl, 
--- 539,542 ----
***************
*** 727,736 ****
  /* XXX UnknownEncodingHandler */
  
- #if EXPAT_VERSION == 0x010200
- VOID_HANDLER(StartDoctypeDecl,
- 	     (void *userData, const XML_Char *doctypeName),
- 	     ("(O&OOi)", STRING_CONV_FUNC,doctypeName,
-               Py_None, Py_None, -1))
- #elif EXPAT_VERSION >= 0x015f00
  VOID_HANDLER(StartDoctypeDecl,
               (void *userData, const XML_Char *doctypeName,
--- 614,617 ----
***************
*** 740,765 ****
                STRING_CONV_FUNC,sysid, STRING_CONV_FUNC,pubid,
                has_internal_subset))
- #endif
  
- #if EXPAT_VERSION >= 0x010200
  VOID_HANDLER(EndDoctypeDecl, (void *userData), ("()"))
- #endif
- 
- #if EXPAT_VERSION == 0x010200
- VOID_HANDLER(ExternalParsedEntityDecl,
- 	     (void *userData, const XML_Char *entityName,
- 	      const XML_Char *base, const XML_Char *systemId,
- 	      const XML_Char *publicId),
- 	     ("(O&O&O&O&)", STRING_CONV_FUNC, entityName,
- 	      STRING_CONV_FUNC, base, STRING_CONV_FUNC, systemId,
- 	      STRING_CONV_FUNC, publicId))
- 
- VOID_HANDLER(InternalParsedEntityDecl,
- 	     (void *userData, const XML_Char *entityName,
- 	      const XML_Char *replacementText, int replacementTextLength),
- 	     ("(O&O&i)", STRING_CONV_FUNC, entityName,
- 	      STRING_CONV_FUNC, replacementText, replacementTextLength))
- 
- #endif /* Expat version 1.2 & better */
  
  /* ---------------------------------------------------------------- */
--- 621,626 ----
***************
*** 925,929 ****
  }
  
- #if EXPAT_VERSION >= 0x015f00
  static char xmlparse_GetInputContext__doc__[] =
  "GetInputContext() -> string\n\
--- 786,789 ----
***************
*** 957,961 ****
      return result;
  }
- #endif
  
  static char xmlparse_ExternalEntityParserCreate__doc__[] = 
--- 817,820 ----
***************
*** 1034,1039 ****
  }
  
- #if EXPAT_VERSION >= 0x010200
- 
  static char xmlparse_SetParamEntityParsing__doc__[] =
  "SetParamEntityParsing(flag) -> success\n\
--- 893,896 ----
***************
*** 1054,1059 ****
  }
  
- #endif /* Expat version 1.2 or better */
- 
  static struct PyMethodDef xmlparse_methods[] = {
      {"Parse",	  (PyCFunction)xmlparse_Parse,
--- 911,914 ----
***************
*** 1067,1078 ****
      {"ExternalEntityParserCreate", (PyCFunction)xmlparse_ExternalEntityParserCreate,
  	 	  METH_VARARGS,      xmlparse_ExternalEntityParserCreate__doc__},
- #if EXPAT_VERSION >= 0x010200
      {"SetParamEntityParsing", (PyCFunction)xmlparse_SetParamEntityParsing,
  		  METH_VARARGS, xmlparse_SetParamEntityParsing__doc__},
- #endif
- #if EXPAT_VERSION >= 0x015f00
      {"GetInputContext", (PyCFunction)xmlparse_GetInputContext,
  		  METH_VARARGS, xmlparse_GetInputContext__doc__},
- #endif
  	{NULL,		NULL}		/* sentinel */
  };
--- 922,929 ----
***************
*** 1573,1577 ****
  
      PyModule_AddObject(m, "__version__", get_version_string());
- #if EXPAT_VERSION >= 0x015f02
      PyModule_AddStringConstant(m, "EXPAT_VERSION",
                                 (char *) XML_ExpatVersion());
--- 1424,1427 ----
***************
*** 1582,1586 ****
                                           info.minor, info.micro));
      }
- #endif
  #ifdef Py_USING_UNICODE
      init_template_buffer();
--- 1432,1435 ----
***************
*** 1650,1654 ****
  #undef MYCONST
  
- #if EXPAT_VERSION >= 0x010200
  #define MYCONST(c) PyModule_AddIntConstant(m, #c, c)
      MYCONST(XML_PARAM_ENTITY_PARSING_NEVER);
--- 1499,1502 ----
***************
*** 1656,1662 ****
      MYCONST(XML_PARAM_ENTITY_PARSING_ALWAYS);
  #undef MYCONST
- #endif
  
- #if EXPAT_VERSION >= 0x015f00
  #define MYCONST(c) PyModule_AddIntConstant(model_module, #c, c)
      PyModule_AddStringConstant(model_module, "__doc__",
--- 1504,1508 ----
***************
*** 1675,1679 ****
      MYCONST(XML_CQUANT_PLUS);
  #undef MYCONST
- #endif
  }
  
--- 1521,1524 ----
***************
*** 1766,1771 ****
  }
  
- #if EXPAT_VERSION >= 0x010200
- 
  static void
  pyxml_SetStartDoctypeDeclHandler(XML_Parser *parser, void *junk)
--- 1611,1614 ----
***************
*** 1784,1789 ****
  }
  
- #endif
- 
  statichere struct HandlerInfo handler_info[] = {
      {"StartElementHandler", 
--- 1627,1630 ----
***************
*** 1832,1836 ****
       (xmlhandlersetter)XML_SetExternalEntityRefHandler,
       (xmlhandler)my_ExternalEntityRefHandler },
- #if EXPAT_VERSION >= 0x010200
      {"StartDoctypeDeclHandler",
       pyxml_SetStartDoctypeDeclHandler,
--- 1673,1676 ----
***************
*** 1839,1852 ****
       pyxml_SetEndDoctypeDeclHandler,
       (xmlhandler)my_EndDoctypeDeclHandler},
- #endif
- #if EXPAT_VERSION == 0x010200
-     {"ExternalParsedEntityDeclHandler",
-      (xmlhandlersetter)XML_SetExternalParsedEntityDeclHandler,
-      (xmlhandler)my_ExternalParsedEntityDeclHandler},
-     {"InternalParsedEntityDeclHandler",
-      (xmlhandlersetter)XML_SetInternalParsedEntityDeclHandler,
-      (xmlhandler)my_InternalParsedEntityDeclHandler},
- #endif
- #if EXPAT_VERSION >= 0x015f00
      {"EntityDeclHandler",
       (xmlhandlersetter)XML_SetEntityDeclHandler,
--- 1679,1682 ----
***************
*** 1861,1865 ****
       (xmlhandlersetter)XML_SetAttlistDeclHandler,
       (xmlhandler)my_AttlistDeclHandler},
- #endif /* Expat version 1.95 or better */
  
      {NULL, NULL, NULL} /* sentinel */
--- 1691,1694 ----