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