Re: cvs: php4 /ext/sockets php_sockets.h sockets.c
| From: | Andi Gutmans | Date: | Mon, 23 Oct 2000 15:58:26 +0000 |
| Subject: | Re: cvs: php4 /ext/sockets php_sockets.h sockets.c | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-35939@lists.php.net to get a copy of this message | ||
Chris,
Can you please answer the Email I sent you when you get to it? (I'm aware you might not have read it yet). We really don't want read()'s behavior to change according to the php.ini. We try to keep these kind of INI directives as a minimum in the PHP project.
Think of it this way. Say you are using two PHP packages, Phorum and Phplib. Each one was coded with a different INI setting for read(). If you wanna run both on the same web site you have a problem. So either make this two distinct functions or pass a flag to it. It's behavior should not depend on the INI file.
Andi
At 11:43 PM 10/22/00 +0000, Chris Vandomelen wrote:
--- Andi Gutmans <andi@zend.com> http://www.zend.com/chrisv Sun Oct 22 16:43:48 2000 EDTModified files:/php4/ext/sockets php_sockets.h sockets.cLog: Added ini entry for choosing whether to use the read() wrapper or directly calling the read() system call. # Some people were commenting about "oddities" in the wrapper that I hadn't # noticed before, though I've used it in many places before now.. Index: php4/ext/sockets/php_sockets.h diff -u php4/ext/sockets/php_sockets.h:1.5 php4/ext/sockets/php_sockets.h:1.6 --- php4/ext/sockets/php_sockets.h:1.5 Thu Sep 7 05:32:47 2000+++ php4/ext/sockets/php_sockets.h Sun Oct 22 16:43:48 2000@@ -19,7 +19,7 @@ #ifndef PHP_SOCKETS_H #define PHP_SOCKETS_H -/* $Id: php_sockets.h,v 1.5 2000/09/07 12:32:47 thies Exp $ */ +/* $Id: php_sockets.h,v 1.6 2000/10/22 23:43:48 chrisv Exp $ */ #if HAVE_SOCKETS @@ -82,6 +82,7 @@ typedef struct {int le_destroy; int le_iov; + int use_system_read;} php_sockets_globals; Index: php4/ext/sockets/sockets.c diff -u php4/ext/sockets/sockets.c:1.18 php4/ext/sockets/sockets.c:1.19--- php4/ext/sockets/sockets.c:1.18 Sun Oct 22 00:54:49 2000+++ php4/ext/sockets/sockets.c Sun Oct 22 16:43:48 2000 @@ -17,7 +17,7 @@+----------------------------------------------------------------------+*/ -/* $Id: sockets.c,v 1.18 2000/10/22 07:54:49 chrisv Exp $ */ +/* $Id: sockets.c,v 1.19 2000/10/22 23:43:48 chrisv Exp $ */ #include "php.h" @@ -32,6 +32,7 @@ #include "ext/standard/info.h" #include "php_sockets.h" +#include "php_ini.h" #include <sys/types.h> #include <sys/socket.h> @@ -192,12 +193,18 @@}} +PHP_INI_BEGIN()+ STD_PHP_INI_BOOLEAN("sockets.use_system_read", "0", PHP_INI_ALL, OnUpdateInt, use_system_read, php_sockets_globals, sockets_globals)+PHP_INI_END() + PHP_MINIT_FUNCTION(sockets) {SOCKETSLS_FETCH(); SOCKETSG(le_destroy) = register_list_destructors(destroy_fd_sets, NULL, "sockets file descriptor set"); SOCKETSG(le_iov) = register_list_destructors(destroy_iovec, NULL, "sockets i/o vector");+ REGISTER_INI_ENTRIES();+REGISTER_LONG_CONSTANT("AF_UNIX", AF_UNIX, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("AF_INET", AF_INET, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOCK_STREAM", SOCK_STREAM, CONST_CS | CONST_PERSISTENT);@@ -619,12 +626,6 @@if (m & O_NONBLOCK) nonblock = 1;- { - char buf[255]; - snprintf(buf, 255, "nonblock = %i\n", nonblock); - PUTS(buf); - }-t = (char *) buf; while (keep_going) { /* (*t != '\n' && *t != '\r' && *t != '\0' && n < maxlen) { */ m = read(fd, (void *) t, 1);@@ -660,6 +661,8 @@zval **fd, **buf, **length, **binary; char *tmpbuf; int ret; + int (*read_function)(int, void *, int, int); + SOCKETSLS_FETCH();if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 4 || zend_get_parameters_ex(ZEND_NUM_ARGS(), &fd, &buf, &length, &binary) == FAILURE) {@@ -669,13 +672,19 @@v_convert_to_long_ex(ZEND_NUM_ARGS() - 1, fd, length, binary); convert_to_string_ex(buf);+ if (SOCKETSG(use_system_read) == 1) { + read_function = (int (*)(int, void *, int, int)) read; + } else { + read_function = (int (*)(int, void *, int, int)) php_read; + }+tmpbuf = emalloc(Z_LVAL_PP(length)*sizeof(char)); if (tmpbuf == NULL) { php_error(E_WARNING, "Couldn't allocate memory from %s()", get_active_function_name()); RETURN_FALSE; }- ret = php_read(Z_LVAL_PP(fd), tmpbuf, Z_LVAL_PP(length), ZEND_NUM_ARGS() == 4 ? Z_LVAL_PP(binary) : 0); + ret = (*read_function)(Z_LVAL_PP(fd), tmpbuf, Z_LVAL_PP(length), ZEND_NUM_ARGS() == 4 ? Z_LVAL_PP(binary) : 0);if (ret >= 0) { Z_STRVAL_PP(buf) = estrndup(tmpbuf,ret);-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net