summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2010-04-12 08:25:50 +0000
committerPierre Joye <pajoye@php.net>2010-04-12 08:25:50 +0000
commit95fcd75af2ef334894aed50ef065352cb4ba61c7 (patch)
tree885b13a75cdaa33e782587260fd066659dcda96c
parent4e7b11cccedddcdaa57c694d13d9276c8997d413 (diff)
downloadphp-git-95fcd75af2ef334894aed50ef065352cb4ba61c7.tar.gz
- [doc] add stream_set_read_buffer, equivalent of stream_set_write_buffer for read operations. Fixing possible bad effects while reading devices. full context support is under work.
-rw-r--r--ext/standard/basic_functions.c6
-rw-r--r--ext/standard/streamsfuncs.c41
-rw-r--r--ext/standard/streamsfuncs.h1
-rw-r--r--ext/standard/var_unserializer.c2
4 files changed, 39 insertions, 11 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index b3e8c70bbb..b9feaf0bef 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -2100,6 +2100,11 @@ ZEND_BEGIN_ARG_INFO(arginfo_stream_set_timeout, 0)
ZEND_END_ARG_INFO()
#endif
+ZEND_BEGIN_ARG_INFO(arginfo_stream_set_read_buffer, 0)
+ ZEND_ARG_INFO(0, fp)
+ ZEND_ARG_INFO(0, buffer)
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO(arginfo_stream_set_write_buffer, 0)
ZEND_ARG_INFO(0, fp)
ZEND_ARG_INFO(0, buffer)
@@ -3101,6 +3106,7 @@ const zend_function_entry basic_functions[] = { /* {{{ */
PHP_FE(fputcsv, arginfo_fputcsv)
PHP_FE(flock, arginfo_flock)
PHP_FE(get_meta_tags, arginfo_get_meta_tags)
+ PHP_FE(stream_set_read_buffer, arginfo_stream_set_read_buffer)
PHP_FE(stream_set_write_buffer, arginfo_stream_set_write_buffer)
PHP_FALIAS(set_file_buffer, stream_set_write_buffer, arginfo_stream_set_write_buffer)
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 6bc2e0598b..94c521508f 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -1372,16 +1372,8 @@ PHP_FUNCTION(stream_set_write_buffer)
size_t buff;
php_stream *stream;
- switch (ZEND_NUM_ARGS()) {
- case 2:
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &arg1, &arg2) == FAILURE) {
- RETURN_FALSE;
- }
- break;
- default:
- WRONG_PARAM_COUNT;
- /* NOTREACHED */
- break;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &arg1, &arg2) == FAILURE) {
+ RETURN_FALSE;
}
php_stream_from_zval(stream, &arg1);
@@ -1399,6 +1391,35 @@ PHP_FUNCTION(stream_set_write_buffer)
}
/* }}} */
+/* {{{ proto int stream_set_read_buffer(resource fp, int buffer)
+ Set file write buffer */
+PHP_FUNCTION(stream_set_read_buffer)
+{
+ zval *arg1;
+ int ret;
+ long arg2;
+ size_t buff;
+ php_stream *stream;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &arg1, &arg2) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ php_stream_from_zval(stream, &arg1);
+
+ buff = arg2;
+
+ /* if buff is 0 then set to non-buffered */
+ if (buff == 0) {
+ ret = php_stream_set_option(stream, PHP_STREAM_OPTION_READ_BUFFER, PHP_STREAM_BUFFER_NONE, NULL);
+ } else {
+ ret = php_stream_set_option(stream, PHP_STREAM_OPTION_READ_BUFFER, PHP_STREAM_BUFFER_FULL, &buff);
+ }
+
+ RETURN_LONG(ret == 0 ? 0 : EOF);
+}
+/* }}} */
+
/* {{{ proto int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])
Enable or disable a specific kind of crypto on the stream */
PHP_FUNCTION(stream_socket_enable_crypto)
diff --git a/ext/standard/streamsfuncs.h b/ext/standard/streamsfuncs.h
index 268be381b4..5eb9385e0d 100644
--- a/ext/standard/streamsfuncs.h
+++ b/ext/standard/streamsfuncs.h
@@ -36,6 +36,7 @@ PHP_FUNCTION(stream_get_contents);
PHP_FUNCTION(stream_set_blocking);
PHP_FUNCTION(stream_select);
PHP_FUNCTION(stream_set_timeout);
+PHP_FUNCTION(stream_set_read_buffer);
PHP_FUNCTION(stream_set_write_buffer);
PHP_FUNCTION(stream_get_transports);
PHP_FUNCTION(stream_get_wrappers);
diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c
index a497224ea9..1ed2710f1f 100644
--- a/ext/standard/var_unserializer.c
+++ b/ext/standard/var_unserializer.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Mon Jan 11 14:20:08 2010 */
+/* Generated by re2c 0.13.5 on Mon Apr 12 10:11:22 2010 */
#line 1 "ext/standard/var_unserializer.re"
/*
+----------------------------------------------------------------------+