diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index eeb9eccbe3bd5..c6eec945e9d17 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -3020,6 +3020,7 @@ PHP_MINIT_FUNCTION(spl_directory) REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "FOLLOW_SYMLINKS", SPL_FILE_DIR_FOLLOW_SYMLINKS); 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); + REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "OTHER_MODE_MASK", SPL_FILE_DIR_OTHERS_MASK); REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "SKIP_DOTS", SPL_FILE_DIR_SKIPDOTS); REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "UNIX_PATHS", SPL_FILE_DIR_UNIXPATHS); diff --git a/ext/spl/tests/filesystemiterator_flags.phpt b/ext/spl/tests/filesystemiterator_flags.phpt new file mode 100644 index 0000000000000..635345655b3b6 --- /dev/null +++ b/ext/spl/tests/filesystemiterator_flags.phpt @@ -0,0 +1,40 @@ +--TEST-- +SPL: FilesystemIterator::getFlags() basic tests +--CREDITS-- +Joshua Thijssen +--FILE-- +setFlags(FileSystemIterator::CURRENT_AS_SELF | + FileSystemIterator::KEY_AS_FILENAME | + FileSystemIterator::SKIP_DOTS | + FileSystemIterator::UNIX_PATHS); +printflags($it); + +$it->setFlags(-1); +printflags($it); + +function printflags($it) { + printf("%08X\n", $it->getFlags()); + printf("%08X\n", ($it->getFlags() & FileSystemIterator::CURRENT_MODE_MASK)); + printf("%08X\n", ($it->getFlags() & FileSystemIterator::KEY_MODE_MASK)); + printf("%08X\n", ($it->getFlags() & FileSystemIterator::OTHER_MODE_MASK)); +} + +?> +--EXPECT-- +00001000 +00000000 +00000000 +00001000 +00003110 +00000010 +00000100 +00003000 +00003FF0 +000000F0 +00000F00 +00003000