summaryrefslogtreecommitdiff
path: root/ext/soap/php_xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/php_xml.c')
-rw-r--r--ext/soap/php_xml.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/ext/soap/php_xml.c b/ext/soap/php_xml.c
index 7995356198..786ebc97a5 100644
--- a/ext/soap/php_xml.c
+++ b/ext/soap/php_xml.c
@@ -1,5 +1,33 @@
#include "php_soap.h"
+/* Channel libxml file io layer through the PHP streams subsystem.
+ * This allows use of ftps:// and https:// urls */
+
+int php_stream_xmlIO_match_wrapper(const char *filename)
+{
+ TSRMLS_FETCH();
+ return php_stream_locate_url_wrapper(filename, NULL, STREAM_LOCATE_WRAPPERS_ONLY TSRMLS_CC) ? 1 : 0;
+
+}
+
+void *php_stream_xmlIO_open_wrapper(const char *filename)
+{
+ TSRMLS_FETCH();
+ return php_stream_open_wrapper(filename, "rb", ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL);
+}
+
+int php_stream_xmlIO_read(void *context, char *buffer, int len)
+{
+ TSRMLS_FETCH();
+ return php_stream_read((php_stream*)context, buffer, len);
+}
+
+int php_stream_xmlIO_close(void *context)
+{
+ TSRMLS_FETCH();
+ return php_stream_close((php_stream*)context);
+}
+
xmlNsPtr attr_find_ns(xmlAttrPtr node)
{
if(node->ns)