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

Reply via email to