helly Mon Feb 4 19:33:03 2008 UTC
Modified files:
/php-src/ext/spl spl_directory.c spl_directory.h
Log:
- Really fix flag handling
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.146&r2=1.147&diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.146
php-src/ext/spl/spl_directory.c:1.147
--- php-src/ext/spl/spl_directory.c:1.146 Mon Feb 4 18:46:02 2008
+++ php-src/ext/spl/spl_directory.c Mon Feb 4 19:33:03 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_directory.c,v 1.146 2008/02/04 18:46:02 helly Exp $ */
+/* $Id: spl_directory.c,v 1.147 2008/02/04 19:33:03 helly Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -597,13 +597,15 @@
zstr path;
int parsed, len;
zend_uchar path_type;
- long flags = 0;
+ long flags;
php_set_error_handling(EH_THROW, spl_ce_RuntimeException TSRMLS_CC);
if (ctor_flags & DIT_CTOR_FLAGS) {
+ flags = 0;
parsed = zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"t|l", &path, &len, &path_type, &flags);
} else {
+ flags =
SPL_FILE_DIR_KEY_AS_PATHNAME|SPL_FILE_DIR_CURRENT_AS_SELF;
parsed = zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t",
&path, &len, &path_type);
}
if (parsed == FAILURE) {
@@ -837,7 +839,7 @@
{
spl_filesystem_object *intern =
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
- if (intern->flags & SPL_FILE_DIR_KEY_AS_FILENAME) {
+ if (SPL_FILE_DIR_KEY(intern, SPL_FILE_DIR_KEY_AS_FILENAME)) {
RETURN_RT_STRING(intern->u.dir.entry.d_name, ZSTR_DUPLICATE);
} else {
spl_filesystem_object_get_file_name(intern TSRMLS_CC);
@@ -852,10 +854,10 @@
{
spl_filesystem_object *intern =
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
- if (intern->flags & SPL_FILE_DIR_CURRENT_AS_PATHNAME) {
+ if (SPL_FILE_DIR_CURRENT(intern, SPL_FILE_DIR_CURRENT_AS_PATHNAME)) {
spl_filesystem_object_get_file_name(intern TSRMLS_CC);
RETURN_ZSTRL(intern->file_name_type, intern->file_name,
intern->file_name_len, ZSTR_DUPLICATE);
- } else if (intern->flags & SPL_FILE_DIR_CURRENT_AS_FILEINFO) {
+ } else if (SPL_FILE_DIR_CURRENT(intern,
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 {
@@ -1460,14 +1462,14 @@
spl_filesystem_iterator *iterator = (spl_filesystem_iterator *)iter;
spl_filesystem_object *object =
spl_filesystem_iterator_to_object(iterator);
- if (object->flags & SPL_FILE_DIR_CURRENT_AS_PATHNAME) {
+ if (SPL_FILE_DIR_CURRENT(object, SPL_FILE_DIR_CURRENT_AS_PATHNAME)) {
if (!iterator->current) {
ALLOC_INIT_ZVAL(iterator->current);
spl_filesystem_object_get_file_name(object TSRMLS_CC);
ZVAL_ZSTRL(iterator->current, object->file_name_type,
object->file_name, object->file_name_len, ZSTR_DUPLICATE);
}
*data = &iterator->current;
- } else if (object->flags & SPL_FILE_DIR_CURRENT_AS_FILEINFO) {
+ } else if (SPL_FILE_DIR_CURRENT(object,
SPL_FILE_DIR_CURRENT_AS_FILEINFO)) {
if (!iterator->current) {
ALLOC_INIT_ZVAL(iterator->current);
spl_filesystem_object_get_file_name(object TSRMLS_CC);
@@ -1485,7 +1487,7 @@
{
spl_filesystem_object *object =
spl_filesystem_iterator_to_object((spl_filesystem_iterator *)iter);
- if (object->flags & SPL_FILE_DIR_KEY_AS_FILENAME) {
+ if (SPL_FILE_DIR_KEY(object, SPL_FILE_DIR_KEY_AS_FILENAME)) {
*str_key_len = strlen(object->u.dir.entry.d_name) + 1;
str_key->s = estrndup(object->u.dir.entry.d_name, *str_key_len
- 1);
return HASH_KEY_IS_STRING;
@@ -1898,11 +1900,11 @@
case IS_UNICODE:
return Z_STRLEN_P(intern->u.file.current_zval) == 0;
case IS_ARRAY:
- if ((intern->flags & SPL_FILE_OBJECT_READ_CSV)
+ if ((intern->flags & SPL_FILE_OBJECT_READ_CSV)
&&
zend_hash_num_elements(Z_ARRVAL_P(intern->u.file.current_zval)) == 1) {
zval ** first =
Z_ARRVAL_P(intern->u.file.current_zval)->pListHead->pData;
- return (Z_TYPE_PP(first) == IS_STRING ||
Z_TYPE_PP(first) == IS_UNICODE)
+ return (Z_TYPE_PP(first) == IS_STRING ||
Z_TYPE_PP(first) == IS_UNICODE)
&& Z_STRLEN_PP(first) == 0;
}
return
zend_hash_num_elements(Z_ARRVAL_P(intern->u.file.current_zval)) == 0;
@@ -2482,17 +2484,17 @@
ZEND_END_ARG_INFO()
static
-ZEND_BEGIN_ARG_INFO(arginfo_file_object_setFlags, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_file_object_setFlags, 0)
ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO()
static
-ZEND_BEGIN_ARG_INFO(arginfo_file_object_setMaxLineLen, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_file_object_setMaxLineLen, 0)
ZEND_ARG_INFO(0, max_len)
ZEND_END_ARG_INFO()
static
-ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetcsv, 0, 0, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetcsv, 0, 0, 0)
ZEND_ARG_INFO(0, delimiter)
ZEND_ARG_INFO(0, enclosure)
ZEND_END_ARG_INFO()
@@ -2604,9 +2606,9 @@
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "CURRENT_MODE_MASK",
SPL_FILE_DIR_CURRENT_MODE_MASK);
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator,
"CURRENT_AS_PATHNAME", SPL_FILE_DIR_CURRENT_AS_PATHNAME);
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator,
"CURRENT_AS_FILEINFO", SPL_FILE_DIR_CURRENT_AS_FILEINFO);
- REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "CURRENT_AS_SELF",
0);
+ 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",
0);
+ REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "KEY_AS_PATHNAME",
SPL_FILE_DIR_KEY_AS_PATHNAME);
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);
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.h?r1=1.39&r2=1.40&diff_format=u
Index: php-src/ext/spl/spl_directory.h
diff -u php-src/ext/spl/spl_directory.h:1.39
php-src/ext/spl/spl_directory.h:1.40
--- php-src/ext/spl/spl_directory.h:1.39 Sat Feb 2 22:53:05 2008
+++ php-src/ext/spl/spl_directory.h Mon Feb 4 19:33:03 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_directory.h,v 1.39 2008/02/02 22:53:05 helly Exp $ */
+/* $Id: spl_directory.h,v 1.40 2008/02/04 19:33:03 helly Exp $ */
#ifndef SPL_DIRECTORY_H
#define SPL_DIRECTORY_H
@@ -118,12 +118,16 @@
#define SPL_FILE_OBJECT_SKIP_EMPTY 0x00000006 /* skip empty lines */
#define SPL_FILE_OBJECT_READ_CSV 0x00000008 /* read via fgetcsv */
-#define SPL_FILE_DIR_CURRENT_AS_FILEINFO 0x00000010 /* make
RecursiveDirectoryTree::current() return SplFileInfo */
+#define SPL_FILE_DIR_CURRENT_AS_FILEINFO 0x00000000 /* make
RecursiveDirectoryTree::current() return SplFileInfo */
+#define SPL_FILE_DIR_CURRENT_AS_SELF 0x00000010 /* make
RecursiveDirectoryTree::current() return getSelf() */
#define SPL_FILE_DIR_CURRENT_AS_PATHNAME 0x00000020 /* make
RecursiveDirectoryTree::current() return getPathname() */
#define SPL_FILE_DIR_CURRENT_MODE_MASK 0x000000F0 /* mask
RecursiveDirectoryTree::current() */
+#define SPL_FILE_DIR_CURRENT(intern,mode)
((intern->flags&SPL_FILE_DIR_CURRENT_MODE_MASK)==mode)
+#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_KEY_MODE_MASK 0x00000F00 /* mask
RecursiveDirectoryTree::key() */
+#define SPL_FILE_DIR_KEY(intern,mode)
((intern->flags&SPL_FILE_DIR_KEY_MODE_MASK)==mode)
#endif /* SPL_DIRECTORY_H */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php