iliaa           Wed Jul  8 03:07:00 2009 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/spl    spl_directory.c spl_directory.h 
    /php-src    NEWS 
  Log:
  
  Fixed bug #48788 (RecursiveDirectoryIterator doesn't descend into symlinked
  directories).  
  
  [DOC] 
  
  To avoid breaking how existing code works a new constant is introduced for
  the RecursiveDirectoryIterator() that directs the code to follow symlinks.
  This constant RecursiveDirectoryIterator::FOLLOW_SYMLINKS can be passed a 
  flag to the constructor to trigger symlink following.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.23.2.45&r2=1.45.2.27.2.23.2.46&diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.23.2.45 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.23.2.46
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.23.2.45 Sat Jul  4 20:31:27 2009
+++ php-src/ext/spl/spl_directory.c     Wed Jul  8 03:06:58 2009
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.23.2.45 2009/07/04 20:31:27 felipe Exp $ 
*/
+/* $Id: spl_directory.c,v 1.45.2.27.2.23.2.46 2009/07/08 03:06:58 iliaa Exp $ 
*/
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -1246,7 +1246,7 @@
                        return;
                }
                spl_filesystem_object_get_file_name(intern TSRMLS_CC);
-               if (!allow_links) {
+               if (!allow_links && !(intern->flags & 
SPL_FILE_DIR_FOLLOW_SYMLINKS)) {
                        php_stat(intern->file_name, intern->file_name_len, 
FS_IS_LINK, return_value TSRMLS_CC);
                        if (zend_is_true(return_value)) {
                                RETURN_FALSE;
@@ -2656,6 +2656,7 @@
        REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "CURRENT_AS_SELF",    
 SPL_FILE_DIR_CURRENT_AS_SELF);
        REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "KEY_MODE_MASK",      
 SPL_FILE_DIR_KEY_MODE_MASK);
        REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "KEY_AS_PATHNAME",    
 SPL_FILE_DIR_KEY_AS_PATHNAME);
+       REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "FOLLOW_SYMLINKS",    
 SPL_FILE_DIR_FOLLOW_SYMLINKS);
        REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "KEY_AS_FILENAME",    
 SPL_FILE_DIR_KEY_AS_FILENAME);
        REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, 
"NEW_CURRENT_AND_KEY", 
SPL_FILE_DIR_KEY_AS_FILENAME|SPL_FILE_DIR_CURRENT_AS_FILEINFO);
        REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "SKIP_DOTS",          
 SPL_FILE_DIR_SKIPDOTS);
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.h?r1=1.12.2.5.2.4.2.14&r2=1.12.2.5.2.4.2.15&diff_format=u
Index: php-src/ext/spl/spl_directory.h
diff -u php-src/ext/spl/spl_directory.h:1.12.2.5.2.4.2.14 
php-src/ext/spl/spl_directory.h:1.12.2.5.2.4.2.15
--- php-src/ext/spl/spl_directory.h:1.12.2.5.2.4.2.14   Thu Jun  4 14:46:26 2009
+++ php-src/ext/spl/spl_directory.h     Wed Jul  8 03:06:59 2009
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.h,v 1.12.2.5.2.4.2.14 2009/06/04 14:46:26 colder Exp $ */
+/* $Id: spl_directory.h,v 1.12.2.5.2.4.2.15 2009/07/08 03:06:59 iliaa Exp $ */
 
 #ifndef SPL_DIRECTORY_H
 #define SPL_DIRECTORY_H
@@ -129,6 +129,7 @@
 
 #define SPL_FILE_DIR_KEY_AS_PATHNAME       0x00000000 /* make 
RecursiveDirectoryTree::key() return getPathname() */
 #define SPL_FILE_DIR_KEY_AS_FILENAME       0x00000100 /* make 
RecursiveDirectoryTree::key() return getFilename() */
+#define SPL_FILE_DIR_FOLLOW_SYMLINKS       0x00000200 /* make 
RecursiveDirectoryTree::hasChildren() follow symlinks */
 #define SPL_FILE_DIR_KEY_MODE_MASK         0x00000F00 /* mask 
RecursiveDirectoryTree::key() */
 #define SPL_FILE_DIR_KEY(intern,mode)      
((intern->flags&SPL_FILE_DIR_KEY_MODE_MASK)==mode)
 
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.670&r2=1.2027.2.547.2.965.2.671&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.670 
php-src/NEWS:1.2027.2.547.2.965.2.671
--- php-src/NEWS:1.2027.2.547.2.965.2.670       Tue Jul  7 22:17:54 2009
+++ php-src/NEWS        Wed Jul  8 03:06:59 2009
@@ -4,6 +4,8 @@
 - Fixed spl_autoload_unregister/spl_autoad_functions wrt. Closures and
   Functors. (Christian Seiler)
 
+- Fixed bug #48788 (RecursiveDirectoryIterator doesn't descend into symlinked
+  directories). (Ilia)
 - Fixed bug #48771 (rename() between volumes fails and reports no error on 
   Windows). (Pierre)
 - Fixed bug #48757 (ReflectionFunction::invoke() parameter issues). (Kalle)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to