summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2003-03-01 01:27:50 +0000
committerWez Furlong <wez@php.net>2003-03-01 01:27:50 +0000
commit558db0d87a3a7a3c32980a2f702a9a302bee9051 (patch)
tree222f13f51940453f9c4b896b938f11ef1376a137
parent349ce76f9660850c0a15f660dff7cebb81c0abc8 (diff)
downloadphp-git-558db0d87a3a7a3c32980a2f702a9a302bee9051.tar.gz
Expose php_stream_copy_to_stream as stream_copy_to_stream(); a high
performance alternative to looping reads and writes.
-rw-r--r--ext/standard/basic_functions.c1
-rw-r--r--ext/standard/streamsfuncs.c19
-rw-r--r--ext/standard/streamsfuncs.h2
3 files changed, 22 insertions, 0 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index d9ef2ebb6c..d4f0454646 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -683,6 +683,7 @@ function_entry basic_functions[] = {
PHP_FE(stream_socket_server, second_and_third_args_force_ref)
PHP_FE(stream_socket_accept, third_arg_force_ref)
PHP_FE(stream_socket_get_name, NULL)
+ PHP_FE(stream_copy_to_stream, NULL)
PHP_FE(fgetcsv, NULL)
PHP_FE(flock, NULL)
PHP_FE(get_meta_tags, NULL)
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 4e46d7694a..5e0c48b491 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -263,6 +263,25 @@ PHP_FUNCTION(stream_socket_get_name)
}
/* }}} */
+/* {{{ proto long stream_copy_to_stream(resource source, resource dest [, long maxlen ])
+ Reads up to maxlen bytes from source stream and writes them to dest stream. */
+PHP_FUNCTION(stream_copy_to_stream)
+{
+ php_stream *src, *dest;
+ zval *zsrc, *zdest;
+ long maxlen = PHP_STREAM_COPY_ALL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|l", &zsrc, &zdest, &maxlen) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ php_stream_from_zval(src, &zsrc);
+ php_stream_from_zval(dest, &zdest);
+
+ RETURN_LONG(php_stream_copy_to_stream(src, dest, maxlen));
+}
+/* }}} */
+
/* {{{ proto resource stream_get_meta_data(resource fp)
Retrieves header/meta data from streams/file pointers */
PHP_FUNCTION(stream_get_meta_data)
diff --git a/ext/standard/streamsfuncs.h b/ext/standard/streamsfuncs.h
index 93b2f707a3..9da5f1f5af 100644
--- a/ext/standard/streamsfuncs.h
+++ b/ext/standard/streamsfuncs.h
@@ -27,6 +27,8 @@ PHP_FUNCTION(stream_socket_server);
PHP_FUNCTION(stream_socket_accept);
PHP_FUNCTION(stream_socket_get_name);
+PHP_FUNCTION(stream_copy_to_stream);
+
PHP_FUNCTION(set_socket_blocking); /* deprecated */
PHP_FUNCTION(stream_set_blocking);
PHP_FUNCTION(stream_select);