Re: cvs: php4 /ext/posix posix.c
| From: | Andi Gutmans | Date: | Mon, 03 Jun 2002 17:19:46 +0000 |
| Subject: | Re: cvs: php4 /ext/posix posix.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-12209@lists.php.net to get a copy of this message | ||
Any reason you're not making this a function?
It's much easier to debug functions (you can put in breakpoints) and with the amount of work you're doing in there it wouldn't hurt performance (you can always use inline if you think it's performance critical).
Andi
At 03:49 PM 6/3/2002 +0000, Markus Fischer wrote:
mfischer Mon Jun 3 11:49:38 2002 EDTModified files:/php4/ext/posix posix.cLog: - Fix isatty() and ttyname() (Closes #17323, #17333). Index: php4/ext/posix/posix.c diff -u php4/ext/posix/posix.c:1.47 php4/ext/posix/posix.c:1.48 --- php4/ext/posix/posix.c:1.47 Mon May 20 19:26:13 2002+++ php4/ext/posix/posix.c Mon Jun 3 11:49:38 2002@@ -16,7 +16,7 @@+----------------------------------------------------------------------+*/ -/* $Id: posix.c,v 1.47 2002/05/20 23:26:13 mfischer Exp $ */ +/* $Id: posix.c,v 1.48 2002/06/03 15:49:38 mfischer Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -25,6 +25,7 @@ #include "php.h" #include "ext/standard/info.h" #include "ext/standard/php_string.h" +#include "ext/standard/file.h" #include "php_posix.h" #if HAVE_POSIX @@ -130,7 +131,7 @@ static PHP_MINFO_FUNCTION(posix) {php_info_print_table_start(); - php_info_print_table_row(2, "Revision", "$Revision: 1.47 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.48 $"); php_info_print_table_end();} /* }}} */ @@ -580,19 +581,44 @@ #endif /* }}} */ +#define STREAM_GET_FD() \+ stream = zend_list_find(Z_LVAL_P(z_fd), &rsrc_type); \ + if (!stream || rsrc_type != php_file_le_stream()) { \ + php_error(E_WARNING, "%s() expects argument 1 to be a valid stream resource", \ + get_active_function_name(TSRMLS_C)); \ + return; \ + } \ + if (php_stream_can_cast(stream, PHP_STREAM_AS_FD) == SUCCESS) { \ + php_stream_cast(stream, PHP_STREAM_AS_FD, (void*)&fd, 0); \ + } else { \ + php_error(E_WARNING, "%s() could not use stream of type '%s'", \ + get_active_function_name(TSRMLS_C), stream->ops->label); \ + return; \ + }+ + /* {{{ proto string posix_ttyname(int fd)Determine terminal device name (POSIX.1, 4.7.2) */PHP_FUNCTION(posix_ttyname) {zval *z_fd; char *p; + php_stream *stream; + int rsrc_type, fd;if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &z_fd) == FAILURE) return;- convert_to_long(z_fd); + switch (Z_TYPE_P(z_fd)) { + case IS_RESOURCE: + STREAM_GET_FD(); + break; + default: + convert_to_long(z_fd); + fd = Z_LVAL_P(z_fd); + }- if (NULL == (p = ttyname(Z_LVAL_P(z_fd)))) { + if (NULL == (p = ttyname(fd))) { POSIX_G(last_error) = errno; RETURN_FALSE; }@@ -606,18 +632,26 @@ PHP_FUNCTION(posix_isatty) {zval *z_fd; - int result; + php_stream *stream; + int rsrc_type, fd;if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &z_fd) == FAILURE) return;- convert_to_long(z_fd); + switch (Z_TYPE_P(z_fd)) { + case IS_RESOURCE: + STREAM_GET_FD(); + break; + default: + convert_to_long(z_fd); + fd = Z_LVAL_P(z_fd); + }- result = isatty(Z_LVAL_P(z_fd)); - if (!result) + if (isatty(fd)) { + RETURN_TRUE; + } else { RETURN_FALSE;-- RETURN_TRUE; + }} /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php