dmitry Wed Jun 11 09:01:44 2008 UTC Modified files: /php-src/main php_streams.h /php-src/main/streams streams.c /php-src/ext/standard dir.c /php-src/ext/standard/tests/dir readdir_variation7.phpt rewinddir_basic.phpt Log: closeder/readdir/rewinddir must work only with directories http://cvs.php.net/viewvc.cgi/php-src/main/php_streams.h?r1=1.134&r2=1.135&diff_format=u Index: php-src/main/php_streams.h diff -u php-src/main/php_streams.h:1.134 php-src/main/php_streams.h:1.135 --- php-src/main/php_streams.h:1.134 Thu Mar 27 10:33:52 2008 +++ php-src/main/php_streams.h Wed Jun 11 09:01:44 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_streams.h,v 1.134 2008/03/27 10:33:52 dmitry Exp $ */ +/* $Id: php_streams.h,v 1.135 2008/06/11 09:01:44 dmitry Exp $ */ #ifndef PHP_STREAMS_H #define PHP_STREAMS_H @@ -189,6 +189,8 @@ #define PHP_STREAM_FLAG_NO_CLOSE 32 +#define PHP_STREAM_FLAG_IS_DIR 64 + struct _php_stream { php_stream_ops *ops; void *abstract; /* convenience pointer for abstraction */ http://cvs.php.net/viewvc.cgi/php-src/main/streams/streams.c?r1=1.164&r2=1.165&diff_format=u Index: php-src/main/streams/streams.c diff -u php-src/main/streams/streams.c:1.164 php-src/main/streams/streams.c:1.165 --- php-src/main/streams/streams.c:1.164 Sun Jun 8 18:21:59 2008 +++ php-src/main/streams/streams.c Wed Jun 11 09:01:44 2008 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.164 2008/06/08 18:21:59 stas Exp $ */ +/* $Id: streams.c,v 1.165 2008/06/11 09:01:44 dmitry Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -2279,7 +2279,7 @@ if (stream) { stream->wrapper = wrapper; - stream->flags |= PHP_STREAM_FLAG_NO_BUFFER; + stream->flags |= PHP_STREAM_FLAG_NO_BUFFER | PHP_STREAM_FLAG_IS_DIR; } } else if (wrapper) { php_stream_wrapper_log_error(wrapper, options ^ REPORT_ERRORS TSRMLS_CC, "not implemented"); http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dir.c?r1=1.175&r2=1.176&diff_format=u Index: php-src/ext/standard/dir.c diff -u php-src/ext/standard/dir.c:1.175 php-src/ext/standard/dir.c:1.176 --- php-src/ext/standard/dir.c:1.175 Wed Mar 5 12:09:33 2008 +++ php-src/ext/standard/dir.c Wed Jun 11 09:01:44 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dir.c,v 1.175 2008/03/05 12:09:33 tony2001 Exp $ */ +/* $Id: dir.c,v 1.176 2008/06/11 09:01:44 dmitry Exp $ */ /* {{{ includes/startup/misc */ @@ -282,6 +282,11 @@ FETCH_DIRP(); + if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid Directory resource", dirp->rsrc_id); + RETURN_FALSE; + } + rsrc_id = dirp->rsrc_id; zend_list_delete(dirp->rsrc_id); @@ -384,6 +389,11 @@ FETCH_DIRP(); + if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid Directory resource", dirp->rsrc_id); + RETURN_FALSE; + } + php_stream_rewinddir(dirp); } /* }}} */ @@ -398,6 +408,11 @@ FETCH_DIRP(); + if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid Directory resource", dirp->rsrc_id); + RETURN_FALSE; + } + if (php_stream_readdir(dirp, &entry)) { RETURN_RT_STRINGL(entry.d_name, strlen(entry.d_name), ZSTR_DUPLICATE); } http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/dir/readdir_variation7.phpt?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/standard/tests/dir/readdir_variation7.phpt diff -u php-src/ext/standard/tests/dir/readdir_variation7.phpt:1.3 php-src/ext/standard/tests/dir/readdir_variation7.phpt:1.4 --- php-src/ext/standard/tests/dir/readdir_variation7.phpt:1.3 Mon May 26 23:48:29 2008 +++ php-src/ext/standard/tests/dir/readdir_variation7.phpt Wed Jun 11 09:01:44 2008 @@ -33,3 +33,4 @@ Warning: readdir(): %d is not a valid Directory resource in %s on line %d bool(false) +===DONE=== http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/dir/rewinddir_basic.phpt?r1=1.4&r2=1.5&diff_format=u Index: php-src/ext/standard/tests/dir/rewinddir_basic.phpt diff -u php-src/ext/standard/tests/dir/rewinddir_basic.phpt:1.4 php-src/ext/standard/tests/dir/rewinddir_basic.phpt:1.5 --- php-src/ext/standard/tests/dir/rewinddir_basic.phpt:1.4 Mon May 26 23:48:29 2008 +++ php-src/ext/standard/tests/dir/rewinddir_basic.phpt Wed Jun 11 09:01:44 2008 @@ -69,16 +69,26 @@ resource(%d) of type (stream) -- Read and rewind first directory (argument supplied) -- -unicode(1) "." -unicode(2) ".." -unicode(9) "file1.tmp" +array(3) { + [0]=> + unicode(1) "." + [1]=> + unicode(2) ".." + [2]=> + unicode(9) "file1.tmp" +} NULL unicode(1) "." -- Read and rewind second directory (no argument supplied) -- -unicode(1) "." -unicode(2) ".." -unicode(9) "file2.tmp" +array(3) { + [0]=> + unicode(1) "." + [1]=> + unicode(2) ".." + [2]=> + unicode(9) "file2.tmp" +} NULL unicode(1) "." ===DONE===
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php