diff options
-rw-r--r-- | ext/xml/compat.c | 2 | ||||
-rw-r--r-- | ext/xml/expat_compat.h | 9 | ||||
-rw-r--r-- | ext/xmlrpc/config.m4 | 50 | ||||
-rw-r--r-- | ext/xmlrpc/libxmlrpc/xml_element.c | 17 | ||||
-rw-r--r-- | ext/xmlrpc/libxmlrpc/xmlrpc.c | 5 | ||||
-rw-r--r-- | main/php_compat.h | 2 |
6 files changed, 62 insertions, 23 deletions
diff --git a/ext/xml/compat.c b/ext/xml/compat.c index cac165094f..610363aa36 100644 --- a/ext/xml/compat.c +++ b/ext/xml/compat.c @@ -17,7 +17,7 @@ */ #include "php.h" -#if defined(HAVE_LIBXML) && defined(HAVE_XML) && !defined(HAVE_LIBEXPAT) +#if defined(HAVE_LIBXML) && (defined(HAVE_XML) || defined(HAVE_XMLRPC)) && !defined(HAVE_LIBEXPAT) #include "expat_compat.h" typedef struct _php_xml_ns { diff --git a/ext/xml/expat_compat.h b/ext/xml/expat_compat.h index a13c900041..5c979c7cf9 100644 --- a/ext/xml/expat_compat.h +++ b/ext/xml/expat_compat.h @@ -21,9 +21,18 @@ #ifndef PHP_EXPAT_COMPAT_H #define PHP_EXPAT_COMPAT_H +#ifdef PHP_WIN32 +#include "config.w32.h" +#elif defined(NETWARE) +#include "config.nw.h" +#else +#include <php_config.h> +#endif + #if !defined(HAVE_LIBEXPAT) && defined(HAVE_LIBXML) #define LIBXML_EXPAT_COMPAT 1 +#include "php.h" #include "php_compat.h" #include <libxml/parser.h> diff --git a/ext/xmlrpc/config.m4 b/ext/xmlrpc/config.m4 index 54335dfea4..4da58ff848 100644 --- a/ext/xmlrpc/config.m4 +++ b/ext/xmlrpc/config.m4 @@ -10,30 +10,52 @@ sinclude(libxmlrpc/xmlrpc.m4) PHP_ARG_WITH(xmlrpc, for XMLRPC-EPI support, [ --with-xmlrpc[=DIR] Include XMLRPC-EPI support.]) +if test -z "$PHP_LIBXML_DIR"; then + PHP_ARG_WITH(libxml-dir, libxml2 install dir, + [ --with-libxml-dir=DIR XMLRPC-EPI: libxml2 install prefix], no, no) +fi + PHP_ARG_WITH(expat-dir, libexpat dir for XMLRPC-EPI, -[ --with-expat-dir=DIR XMLRPC-EPI: libexpat dir for XMLRPC-EPI.],no,no) +[ --with-expat-dir=DIR XMLRPC-EPI: libexpat dir for XMLRPC-EPI. (deprecated)],no,no) PHP_ARG_WITH(iconv-dir, iconv dir for XMLRPC-EPI, [ --with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI.],no,no) if test "$PHP_XMLRPC" != "no"; then + PHP_ADD_EXTENSION_DEP(xmlrpc, libxml) PHP_SUBST(XMLRPC_SHARED_LIBADD) AC_DEFINE(HAVE_XMLRPC,1,[ ]) - testval=no - for i in $PHP_EXPAT_DIR $XMLRPC_DIR /usr/local /usr; do - if test -f $i/$PHP_LIBDIR/libexpat.a -o -f $i/$PHP_LIBDIR/libexpat.$SHLIB_SUFFIX_NAME; then - AC_DEFINE(HAVE_LIBEXPAT2,1,[ ]) - PHP_ADD_LIBRARY_WITH_PATH(expat, $i/$PHP_LIBDIR, XMLRPC_SHARED_LIBADD) - PHP_ADD_INCLUDE($i/include) - testval=yes - break + dnl + dnl Default to libxml2. + dnl + PHP_SETUP_LIBXML(XMLRPC_SHARED_LIBADD, [ + if test "$PHP_XML" = "no"; then + PHP_ADD_SOURCES(ext/xml, compat.c) + PHP_ADD_BUILD_DIR(ext/xml) + fi + ], [ + if test "$PHP_EXPAT_DIR" = "no"; then + AC_MSG_ERROR([xml2-config not found. Use --with-libxml-dir=<DIR>]) fi - done + ]) - if test "$testval" = "no"; then - AC_MSG_ERROR(XML-RPC support requires libexpat. Use --with-expat-dir=<DIR>) + if test "$PHP_EXPAT_DIR" != "no"; then + testval=no + for i in $PHP_EXPAT_DIR $XMLRPC_DIR /usr/local /usr; do + if test -f $i/$PHP_LIBDIR/libexpat.a -o -f $i/$PHP_LIBDIR/libexpat.$SHLIB_SUFFIX_NAME; then + AC_DEFINE(HAVE_LIBEXPAT,1,[ ]) + PHP_ADD_LIBRARY_WITH_PATH(expat, $i/$PHP_LIBDIR, XMLRPC_SHARED_LIBADD) + PHP_ADD_INCLUDE($i/include) + testval=yes + break + fi + done + + if test "$testval" = "no"; then + AC_MSG_ERROR(XML-RPC support requires libexpat. Use --with-expat-dir=<DIR>) + fi fi if test "$PHP_ICONV_DIR" != "no"; then @@ -49,7 +71,6 @@ if test "$PHP_XMLRPC" != "no"; then ]) fi - if test "$PHP_XMLRPC" = "yes"; then XMLRPC_CHECKS PHP_NEW_EXTENSION(xmlrpc,xmlrpc-epi-php.c libxmlrpc/base64.c \ @@ -89,5 +110,6 @@ dnl for xmlrpc-epi because of this. PHP_ADD_INCLUDE($XMLRPC_DIR) PHP_ADD_LIBRARY_WITH_PATH(xmlrpc, $XMLRPC_DIR/$PHP_LIBDIR, XMLRPC_SHARED_LIBADD) + PHP_NEW_EXTENSION(xmlrpc,xmlrpc-epi-php.c, $ext_shared) + XMLRPC_MODULE_TYPE=external fi - diff --git a/ext/xmlrpc/libxmlrpc/xml_element.c b/ext/xmlrpc/libxmlrpc/xml_element.c index 5fee23959c..e9f6a4bbb0 100644 --- a/ext/xmlrpc/libxmlrpc/xml_element.c +++ b/ext/xmlrpc/libxmlrpc/xml_element.c @@ -44,6 +44,11 @@ static const char rcsid[] = "#(@) $Id$"; * 06/2000 * HISTORY * $Log$ + * Revision 1.6 2004/06/01 20:16:06 iliaa + * Fixed bug #28597 (xmlrpc_encode_request() incorrectly encodes chars in + * 200-210 range). + * Patch by: fernando dot nemec at folha dot com dot br + * * Revision 1.5 2003/12/16 21:00:21 sniper * Fix some compile warnings (patch by Joe Orton) * @@ -105,7 +110,7 @@ static const char rcsid[] = "#(@) $Id$"; #include "xml_element.h" #include "queue.h" -#include "expat.h" +#include "ext/xml/expat_compat.h" #include "encodings.h" #define my_free(thing) if(thing) {free(thing); thing = 0;} @@ -567,7 +572,7 @@ typedef struct _xml_elem_data { /* expat start of element handler */ -static void startElement(void *userData, const char *name, const char **attrs) +static void _xmlrpc_startElement(void *userData, const char *name, const char **attrs) { xml_element *c; xml_elem_data* mydata = (xml_elem_data*)userData; @@ -595,7 +600,7 @@ static void startElement(void *userData, const char *name, const char **attrs) } /* expat end of element handler */ -static void endElement(void *userData, const char *name) +static void _xmlrpc_endElement(void *userData, const char *name) { xml_elem_data* mydata = (xml_elem_data*)userData; @@ -607,7 +612,7 @@ static void endElement(void *userData, const char *name) } /* expat char data handler */ -static void charHandler(void *userData, +static void _xmlrpc_charHandler(void *userData, const char *s, int len) { @@ -680,8 +685,8 @@ xml_element* xml_elem_parse_buf(const char* in_buf, int len, XML_ELEM_INPUT_OPTI mydata.input_options = options; mydata.needs_enc_conversion = options->encoding && strcmp(options->encoding, encoding_utf_8); - XML_SetElementHandler(parser, startElement, endElement); - XML_SetCharacterDataHandler(parser, charHandler); + XML_SetElementHandler(parser, _xmlrpc_startElement, _xmlrpc_endElement); + XML_SetCharacterDataHandler(parser, _xmlrpc_charHandler); /* pass the xml_elem_data struct along */ XML_SetUserData(parser, (void*)&mydata); diff --git a/ext/xmlrpc/libxmlrpc/xmlrpc.c b/ext/xmlrpc/libxmlrpc/xmlrpc.c index 1fbb4a7ec3..90a8b92109 100644 --- a/ext/xmlrpc/libxmlrpc/xmlrpc.c +++ b/ext/xmlrpc/libxmlrpc/xmlrpc.c @@ -43,6 +43,9 @@ static const char rcsid[] = "#(@) $Id$"; * 9/1999 - 10/2000 * HISTORY * $Log$ + * Revision 1.6 2004/04/27 17:33:59 iliaa + * Removed C++ style comments. + * * Revision 1.5 2003/12/16 21:00:21 sniper * Fix some compile warnings (patch by Joe Orton) * @@ -129,7 +132,7 @@ static const char rcsid[] = "#(@) $Id$"; #include "queue.h" #include "xmlrpc.h" -#include "expat.h" +#include "ext/xml/expat_compat.h" #include "base64.h" #include "xml_to_xmlrpc.h" diff --git a/main/php_compat.h b/main/php_compat.h index b52cc92d5c..959ab82040 100644 --- a/main/php_compat.h +++ b/main/php_compat.h @@ -46,7 +46,7 @@ #define hashTableIterInit php_hashTableIterInit #define hashTableIterNext php_hashTableIterNext -#if defined(HAVE_LIBXML) && defined(HAVE_XML) && !defined(HAVE_LIBEXPAT) +#if defined(HAVE_LIBXML) && (defined(HAVE_XML) || defined(HAVE_XMLRPC)) && !defined(HAVE_LIBEXPAT) #define XML_DefaultCurrent php_XML_DefaultCurrent #define XML_ErrorString php_XML_ErrorString #define XML_ExpatVersion php_XML_ExpatVersion |