]> granicus.if.org Git - php/commitdiff
- Made it possible to build ext/xmlrpc with libxml2
authorfoobar <sniper@php.net>
Sat, 26 Mar 2005 03:13:58 +0000 (03:13 +0000)
committerfoobar <sniper@php.net>
Sat, 26 Mar 2005 03:13:58 +0000 (03:13 +0000)
ext/xml/compat.c
ext/xml/expat_compat.h
ext/xmlrpc/config.m4
ext/xmlrpc/libxmlrpc/xml_element.c
ext/xmlrpc/libxmlrpc/xmlrpc.c
main/php_compat.h

index cac165094fcdc6ef8bea62c333ef0b36dfb22ee6..610363aa36d59d6b39c527c161fa79051dcf0945 100644 (file)
@@ -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 {
index a13c900041239a94865e05e2545f9c44a31ede93..5c979c7cf915ae03b20cc67c9f72230854b280c9 100644 (file)
 #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>
index 54335dfea41d8eb782888ef3dd9dd4541658c0ba..4da58ff8485a79cc7f67efbb145068cc7f9e3f62 100644 (file)
@@ -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
-
index 5fee23959cfcb11a55d3d4a336c072d313ae7bc4..e9f6a4bbb00687b68f8d7390ca5cab53a6473350 100644 (file)
@@ -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);
index 1fbb4a7ec35b3e227cf158b8ef454e317d40f149..90a8b92109e7724ee5cc16d998f651c2c62c6845 100644 (file)
@@ -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"
index b52cc92d5c4e8511865e951b5addedf50e1bfe21..959ab8204006ad2de3a0115fd4bb0421c411f6f8 100644 (file)
@@ -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