helly Sun Nov 27 08:07:19 2005 EDT Modified files: /php-src/ext/spl spl_directory.c spl_directory.h Log: - Fix minor issues in RecursiveDirectoryIterator & provide new flag consts http://cvs.php.net/diff.php/php-src/ext/spl/spl_directory.c?r1=1.56&r2=1.57&ty=u Index: php-src/ext/spl/spl_directory.c diff -u php-src/ext/spl/spl_directory.c:1.56 php-src/ext/spl/spl_directory.c:1.57 --- php-src/ext/spl/spl_directory.c:1.56 Sun Nov 27 07:13:42 2005 +++ php-src/ext/spl/spl_directory.c Sun Nov 27 08:07:18 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_directory.c,v 1.56 2005/11/27 12:13:42 helly Exp $ */ +/* $Id: spl_directory.c,v 1.57 2005/11/27 13:07:18 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -334,7 +334,7 @@ switch (type) { case SPL_FS_INFO: - return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : intern->info_class, &intern TSRMLS_CC); + return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : source->info_class, &intern TSRMLS_CC); Z_TYPE_P(return_value) = IS_OBJECT; spl_filesystem_object_get_file_name(source TSRMLS_CC); @@ -342,7 +342,7 @@ intern->file_name_len = source->file_name_len; break; case SPL_FS_FILE: - return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : intern->file_class, &intern TSRMLS_CC); + return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : source->file_class, &intern TSRMLS_CC); Z_TYPE_P(return_value) = IS_OBJECT; spl_filesystem_object_get_file_name(source TSRMLS_CC); @@ -549,11 +549,15 @@ { spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC); - if (intern->flags & SPL_FILE_DIR_CURRENT_AS_FILEINFO) { + if (intern->flags & SPL_FILE_DIR_CURRENT_AS_PATHNAME) { + spl_filesystem_object_get_file_name(intern TSRMLS_CC); + RETURN_STRINGL(intern->file_name, intern->file_name_len, 1); + } else if (intern->flags & SPL_FILE_DIR_CURRENT_AS_FILEINFO) { spl_filesystem_object_get_file_name(intern TSRMLS_CC); spl_filesystem_object_create_type(0, intern, SPL_FS_INFO, NULL, return_value TSRMLS_CC); } else { - RETURN_STRING(intern->u.dir.entry.d_name, 1); + RETURN_ZVAL(getThis(), 1, 0); + /*RETURN_STRING(intern->u.dir.entry.d_name, 1);*/ } } /* }}} */ @@ -1031,7 +1035,14 @@ spl_filesystem_dir_it *iterator = (spl_filesystem_dir_it *)iter; spl_filesystem_object *object = iterator->object; - if (object->flags & SPL_FILE_DIR_CURRENT_AS_FILEINFO) { + if (object->flags & SPL_FILE_DIR_CURRENT_AS_PATHNAME) { + if (!iterator->current) { + ALLOC_INIT_ZVAL(iterator->current); + spl_filesystem_object_get_file_name(object TSRMLS_CC); + ZVAL_STRINGL(iterator->current, object->file_name, object->file_name_len, 1); + } + *data = &iterator->current; + } else if (object->flags & SPL_FILE_DIR_CURRENT_AS_FILEINFO) { if (!iterator->current) { ALLOC_INIT_ZVAL(iterator->current); spl_filesystem_object_get_file_name(object TSRMLS_CC); @@ -1930,7 +1941,13 @@ REGISTER_SPL_SUB_CLASS_EX(RecursiveDirectoryIterator, DirectoryIterator, spl_filesystem_object_new, spl_RecursiveDirectoryIterator_functions); REGISTER_SPL_IMPLEMENTS(RecursiveDirectoryIterator, RecursiveIterator); + + REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "CURRENT_MODE_MASK", SPL_FILE_DIR_CURRENT_MODE_MASK); + REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "CURRENT_AS_PATHNAME", SPL_FILE_DIR_CURRENT_AS_PATHNAME); REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "CURRENT_AS_FILEINFO", SPL_FILE_DIR_CURRENT_AS_FILEINFO); + REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "CURRENT_AS_SELF", 0); + REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "KEY_MODE_MASK", SPL_FILE_DIR_KEY_MODE_MASK); + REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "KEY_AS_PATHNAME", 0); REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "KEY_AS_FILENAME", SPL_FILE_DIR_KEY_AS_FILENAME); REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, "NEW_CURRENT_AND_KEY", SPL_FILE_DIR_KEY_AS_FILENAME|SPL_FILE_DIR_CURRENT_AS_FILEINFO); http://cvs.php.net/diff.php/php-src/ext/spl/spl_directory.h?r1=1.17&r2=1.18&ty=u Index: php-src/ext/spl/spl_directory.h diff -u php-src/ext/spl/spl_directory.h:1.17 php-src/ext/spl/spl_directory.h:1.18 --- php-src/ext/spl/spl_directory.h:1.17 Tue Nov 1 11:54:44 2005 +++ php-src/ext/spl/spl_directory.h Sun Nov 27 08:07:18 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_directory.h,v 1.17 2005/11/01 16:54:44 helly Exp $ */ +/* $Id: spl_directory.h,v 1.18 2005/11/27 13:07:18 helly Exp $ */ #ifndef SPL_DIRECTORY_H #define SPL_DIRECTORY_H @@ -75,8 +75,13 @@ } spl_filesystem_object; #define SPL_FILE_OBJECT_DROP_NEW_LINE 0x00000001 /* drop new lines */ + #define SPL_FILE_DIR_CURRENT_AS_FILEINFO 0x00000010 /* make RecursiveDirectoryTree::current() return SplFileInfo */ -#define SPL_FILE_DIR_KEY_AS_FILENAME 0x00000020 /* make RecursiveDirectoryTree::key() return getFilename() */ +#define SPL_FILE_DIR_CURRENT_AS_PATHNAME 0x00000020 /* make RecursiveDirectoryTree::current() return getPathname() */ +#define SPL_FILE_DIR_CURRENT_MODE_MASK 0x000000F0 /* make RecursiveDirectoryTree::key() return getFilename() */ + +#define SPL_FILE_DIR_KEY_AS_FILENAME 0x00000100 /* make RecursiveDirectoryTree::key() return getFilename() */ +#define SPL_FILE_DIR_KEY_MODE_MASK 0x00000F00 /* make RecursiveDirectoryTree::key() return getFilename() */ #endif /* SPL_DIRECTORY_H */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php