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

Reply via email to