helly           Sun Mar  4 00:23:07 2007 UTC

  Modified files:              
    /php-src/ext/spl    spl_directory.c spl_directory.h 
  Log:
  - Fix a minor issue with glob support - forgot to set length of string 
  - Add ability to not use glob on subdirs
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.127&r2=1.128&diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.127 
php-src/ext/spl/spl_directory.c:1.128
--- php-src/ext/spl/spl_directory.c:1.127       Sat Mar  3 23:41:43 2007
+++ php-src/ext/spl/spl_directory.c     Sun Mar  4 00:23:07 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.c,v 1.127 2007/03/03 23:41:43 helly Exp $ */
+/* $Id: spl_directory.c,v 1.128 2007/03/04 00:23:07 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -1206,24 +1206,22 @@
        spl_filesystem_object_get_file_name(intern TSRMLS_CC);
 
        INIT_PZVAL(&zflags);
-       ZVAL_LONG(&zflags, intern->flags);
-
        INIT_PZVAL(&zpath);
-       if (intern->flags & SPL_FILE_DIR_USE_GLOB) {
+       if ((intern->flags & 
(SPL_FILE_DIR_USE_GLOB|SPL_FILE_DIR_NO_GLOB_CHILD)) == SPL_FILE_DIR_USE_GLOB) {
+               ZVAL_LONG(&zflags, intern->flags);
                Z_TYPE(zpath) = IS_STRING;
-               spprintf(&Z_STRVAL(zpath), 0, "%R%c%s",
+               Z_STRLEN(zpath) = spprintf(&Z_STRVAL(zpath), 0, "%R%c%s",
                        intern->file_name_type, intern->file_name,
                        DEFAULT_SLASH,
                        php_glob_stream_get_pattern(intern->u.dir.dirp, 0, 
NULL));
        } else {
-               ZVAL_ZSTRL(&zpath, intern->file_name_type, intern->file_name, 
intern->file_name_len, 0);
+               ZVAL_LONG(&zflags, intern->flags & ~SPL_FILE_DIR_USE_GLOB);
+               ZVAL_ZSTRL(&zpath, intern->file_name_type, intern->file_name, 
intern->file_name_len, 1);
        }
 
        spl_instantiate_arg_ex2(spl_ce_RecursiveDirectoryIterator, 
&return_value, 0, &zpath, &zflags TSRMLS_CC);
 
-       if (intern->flags & SPL_FILE_DIR_USE_GLOB) {
-               efree(Z_STRVAL(zpath));
-       }
+       zval_dtor(&zpath);
 
        subdir = 
(spl_filesystem_object*)zend_object_store_get_object(return_value TSRMLS_CC);
        if (subdir) {
@@ -2509,7 +2507,8 @@
        REGISTER_SPL_SUB_CLASS_EX(DirectoryIterator, SplFileInfo, 
spl_filesystem_object_new, spl_DirectoryIterator_functions);
        zend_class_implements(spl_ce_DirectoryIterator TSRMLS_CC, 1, 
zend_ce_iterator);
 
-       REGISTER_SPL_CLASS_CONST_LONG(DirectoryIterator, "USE_GLOB", 
SPL_FILE_DIR_USE_GLOB);
+       REGISTER_SPL_CLASS_CONST_LONG(DirectoryIterator, "USE_GLOB",        
SPL_FILE_DIR_USE_GLOB);
+       REGISTER_SPL_CLASS_CONST_LONG(DirectoryIterator, "NO_GLOB_CHILD",   
SPL_FILE_DIR_NO_GLOB_CHILD);
 
        spl_ce_DirectoryIterator->get_iterator = 
spl_filesystem_dir_get_iterator;
 
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.h?r1=1.31&r2=1.32&diff_format=u
Index: php-src/ext/spl/spl_directory.h
diff -u php-src/ext/spl/spl_directory.h:1.31 
php-src/ext/spl/spl_directory.h:1.32
--- php-src/ext/spl/spl_directory.h:1.31        Sat Mar  3 23:41:43 2007
+++ php-src/ext/spl/spl_directory.h     Sun Mar  4 00:23:07 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.h,v 1.31 2007/03/03 23:41:43 helly Exp $ */
+/* $Id: spl_directory.h,v 1.32 2007/03/04 00:23:07 helly Exp $ */
 
 #ifndef SPL_DIRECTORY_H
 #define SPL_DIRECTORY_H
@@ -122,6 +122,7 @@
 
 #define SPL_FILE_DIR_USE_GLOB              0x00001000 /* use glob for open 
dir*/
 #define SPL_FILE_DIR_GLOB_REFETCH_PATH     0x00002000 /* whether we need to 
refetch the path in glob mode */
+#define SPL_FILE_DIR_NO_GLOB_CHILD         0x00004000 /* do not use glob on 
childs */
 
 #endif /* SPL_DIRECTORY_H */
 

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

Reply via email to