[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c spl_directory.h

2009-07-07 Thread Ilia Alshanetsky
iliaa   Wed Jul  8 03:08:03 2009 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c spl_directory.h 
  Log:
  
  MFB: Fixed bug #48788 (RecursiveDirectoryIterator doesn't descend into
  symlinked directories).  
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.30r2=1.45.2.27.2.31diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.30 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.31
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.30  Wed Dec 31 11:17:44 2008
+++ php-src/ext/spl/spl_directory.c Wed Jul  8 03:08:03 2009
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.30 2008/12/31 11:17:44 sebastian Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.31 2009/07/08 03:08:03 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1032,7 +1032,7 @@
return;
}
spl_filesystem_object_get_file_name(intern TSRMLS_CC);
-   if (!allow_links) {
+   if (!allow_links  !(intern-flags  
SPL_FILE_DIR_FOLLOW_SYMLINKS)) {
php_stat(intern-file_name, intern-file_name_len, 
FS_IS_LINK, return_value TSRMLS_CC);
if (zend_is_true(return_value)) {
RETURN_BOOL(0);
@@ -2354,6 +2354,7 @@
REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, 
CURRENT_AS_SELF, SPL_FILE_DIR_CURRENT_AS_SELF);
REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, 
KEY_MODE_MASK,   SPL_FILE_DIR_KEY_MODE_MASK);
REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, 
KEY_AS_PATHNAME, SPL_FILE_DIR_KEY_AS_PATHNAME);
+   REGISTER_SPL_CLASS_CONST_LONG(RecursiveDirectoryIterator, 
FOLLOW_SYMLINKS, SPL_FILE_DIR_FOLLOW_SYMLINKS);
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/viewvc.cgi/php-src/ext/spl/spl_directory.h?r1=1.12.2.5.2.11r2=1.12.2.5.2.12diff_format=u
Index: php-src/ext/spl/spl_directory.h
diff -u php-src/ext/spl/spl_directory.h:1.12.2.5.2.11 
php-src/ext/spl/spl_directory.h:1.12.2.5.2.12
--- php-src/ext/spl/spl_directory.h:1.12.2.5.2.11   Wed Dec 31 11:17:44 2008
+++ php-src/ext/spl/spl_directory.h Wed Jul  8 03:08:03 2009
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.h,v 1.12.2.5.2.11 2008/12/31 11:17:44 sebastian Exp $ */
+/* $Id: spl_directory.h,v 1.12.2.5.2.12 2009/07/08 03:08:03 iliaa Exp $ */
 
 #ifndef SPL_DIRECTORY_H
 #define SPL_DIRECTORY_H
@@ -101,6 +101,7 @@
 
 #define SPL_FILE_DIR_KEY_AS_PATHNAME   0x /* make 
RecursiveDirectoryTree::key() return getPathname() */
 #define SPL_FILE_DIR_KEY_AS_FILENAME   0x0100 /* make 
RecursiveDirectoryTree::key() return getFilename() */
+#define SPL_FILE_DIR_FOLLOW_SYMLINKS   0x0200 /* make 
RecursiveDirectoryTree::hasChildren() follow symlinks */
 #define SPL_FILE_DIR_KEY_MODE_MASK 0x0F00 /* mask 
RecursiveDirectoryTree::key() */
 #define SPL_FILE_DIR_KEY(intern,mode)  
((intern-flagsSPL_FILE_DIR_KEY_MODE_MASK)==mode)
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2008-05-03 Thread Etienne Kneuss
colder  Sat May  3 16:00:40 2008 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  MFB: Fix #44838 (static class reference restricting overwriting)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.26r2=1.45.2.27.2.27diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.26 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.27
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.26  Wed Feb 13 12:23:26 2008
+++ php-src/ext/spl/spl_directory.c Sat May  3 16:00:40 2008
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.26 2008/02/13 12:23:26 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.27 2008/05/03 16:00:40 colder Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1055,7 +1055,7 @@
INIT_PZVAL(zpath);
ZVAL_STRINGL(zpath, intern-file_name, intern-file_name_len, 0);
 
-   spl_instantiate_arg_ex1(spl_ce_RecursiveDirectoryIterator, 
return_value, 0, zpath TSRMLS_CC);
+   spl_instantiate_arg_ex1(Z_OBJCE_P(getThis()), return_value, 0, zpath 
TSRMLS_CC);

subdir = 
(spl_filesystem_object*)zend_object_store_get_object(return_value TSRMLS_CC);
if (subdir) {



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2007-09-22 Thread Ilia Alshanetsky
iliaa   Sat Sep 22 15:55:36 2007 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  Improve check for filename (fixed coverity issue #355)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.22r2=1.45.2.27.2.23diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.22 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.23
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.22  Tue Aug 21 22:45:53 2007
+++ php-src/ext/spl/spl_directory.c Sat Sep 22 15:55:35 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.22 2007/08/21 22:45:53 johannes Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.23 2007/09/22 15:55:35 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -862,7 +862,7 @@
spl_filesystem_object_get_file_name(intern TSRMLS_CC);
}
 
-   if (intern-file_name_len  VCWD_REALPATH(intern-file_name, buff)) {
+   if (intern-file_name  VCWD_REALPATH(intern-file_name, buff)) {
 #ifdef ZTS
if (VCWD_ACCESS(buff, F_OK)) {
RETVAL_FALSE;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2007-06-05 Thread Antony Dovgal
tony2001Tue Jun  5 12:02:46 2007 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  MFH
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.20r2=1.45.2.27.2.21diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.20 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.21
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.20  Mon Apr  9 15:34:55 2007
+++ php-src/ext/spl/spl_directory.c Tue Jun  5 12:02:46 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.20 2007/04/09 15:34:55 dmitry Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.21 2007/06/05 12:02:46 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -829,7 +829,11 @@
 
php_set_error_handling(EH_THROW, spl_ce_RuntimeException TSRMLS_CC);
 
+#ifdef HAVE_SYMLINK
ret = readlink(intern-file_name, buff, MAXPATHLEN-1);
+#else
+   ret = -1; /* always fail if not implemented */
+#endif
 
if (ret == -1) {
zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, 
Unable to read link %s, error: %s, intern-file_name, strerror(errno));

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2007-04-09 Thread Dmitry Stogov
dmitry  Mon Apr  9 15:34:55 2007 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  Fixed 64-bit support
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.19r2=1.45.2.27.2.20diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.19 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.20
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.19  Sun Mar  4 14:01:06 2007
+++ php-src/ext/spl/spl_directory.c Mon Apr  9 15:34:55 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.19 2007/03/04 14:01:06 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.20 2007/04/09 15:34:55 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -595,7 +595,8 @@
 {
spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
char *fname, *suffix = 0;
-   int flen, slen = 0;
+   size_t flen;
+   int slen = 0;
 
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |s, suffix, 
slen) == FAILURE) {
return;
@@ -621,7 +622,8 @@
 {
spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
char *suffix = 0, *fname;
-   int slen = 0, flen;
+   int slen = 0;
+   size_t flen;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |s, suffix, 
slen) == FAILURE) {
return;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c spl_iterators.c /ext/spl/internal parentiterator.inc

2007-03-04 Thread Marcus Boerger
helly   Sun Mar  4 12:18:02 2007 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c spl_iterators.c 
/php-src/ext/spl/internal   parentiterator.inc 
  Log:
  - MFH simplify, synch docu/implementation
  http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.17r2=1.45.2.27.2.18diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.17 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.18
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.17  Sat Mar  3 15:08:59 2007
+++ php-src/ext/spl/spl_directory.c Sun Mar  4 12:18:02 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.17 2007/03/03 15:08:59 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.18 2007/03/04 12:18:02 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -448,6 +448,18 @@
return NULL;
 } /* }}} */
 
+static inline int spl_filesystem_is_dot(const char * d_name) /* {{{ */
+{
+   return !strcmp(d_name, .) || !strcmp(d_name, ..);
+}
+/* }}} */
+
+static int spl_filesystem_is_invalid_or_dot(const char * d_name) /* {{{ */
+{
+   return d_name[0] == '\0' || spl_filesystem_is_dot(d_name);
+}
+/* }}} */
+
 /* {{{ proto void DirectoryIterator::__construct(string path)
  Cronstructs a new dir iterator from a path. */
 SPL_METHOD(DirectoryIterator, __construct)
@@ -681,7 +693,7 @@
 {
spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
 
-   RETURN_BOOL(!strcmp(intern-u.dir.entry.d_name, .) || 
!strcmp(intern-u.dir.entry.d_name, ..));
+   RETURN_BOOL(spl_filesystem_is_dot(intern-u.dir.entry.d_name));
 }
 /* }}} */
 
@@ -972,7 +984,7 @@
if (!intern-u.dir.dirp || 
!php_stream_readdir(intern-u.dir.dirp, intern-u.dir.entry)) {
intern-u.dir.entry.d_name[0] = '\0';
}
-   } while (!strcmp(intern-u.dir.entry.d_name, .) || 
!strcmp(intern-u.dir.entry.d_name, ..));
+   } while (spl_filesystem_is_dot(intern-u.dir.entry.d_name));
 }
 /* }}} */
 
@@ -987,7 +999,7 @@
if (!intern-u.dir.dirp || 
!php_stream_readdir(intern-u.dir.dirp, intern-u.dir.entry)) {
intern-u.dir.entry.d_name[0] = '\0';
}
-   } while (!strcmp(intern-u.dir.entry.d_name, .) || 
!strcmp(intern-u.dir.entry.d_name, ..));
+   } while (spl_filesystem_is_dot(intern-u.dir.entry.d_name));
if (intern-file_name) {
efree(intern-file_name);
intern-file_name = NULL;
@@ -1002,7 +1014,7 @@
zend_bool allow_links = 0;
spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);

-   if (!strcmp(intern-u.dir.entry.d_name, .) || 
!strcmp(intern-u.dir.entry.d_name, ..)) {
+   if (spl_filesystem_is_invalid_or_dot(intern-u.dir.entry.d_name)) {
RETURN_BOOL(0);
} else {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |b, 
allow_links) == FAILURE) {
@@ -1274,7 +1286,7 @@
if (!object-u.dir.dirp || 
!php_stream_readdir(object-u.dir.dirp, object-u.dir.entry)) {
object-u.dir.entry.d_name[0] = '\0';
}
-   } while (!strcmp(object-u.dir.entry.d_name, .) || 
!strcmp(object-u.dir.entry.d_name, ..));
+   } while (spl_filesystem_is_dot(intern-u.dir.entry.d_name));
if (object-file_name) {
efree(object-file_name);
object-file_name = NULL;
@@ -1300,7 +1312,7 @@
if (!object-u.dir.dirp || 
!php_stream_readdir(object-u.dir.dirp, object-u.dir.entry)) {
object-u.dir.entry.d_name[0] = '\0';
}
-   } while (!strcmp(object-u.dir.entry.d_name, .) || 
!strcmp(object-u.dir.entry.d_name, ..));
+   } while (spl_filesystem_is_dot(intern-u.dir.entry.d_name));
if (iterator-current) {
zval_ptr_dtor(iterator-current);
iterator-current = NULL;
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_iterators.c?r1=1.73.2.30.2.25r2=1.73.2.30.2.26diff_format=u
Index: php-src/ext/spl/spl_iterators.c
diff -u php-src/ext/spl/spl_iterators.c:1.73.2.30.2.25 
php-src/ext/spl/spl_iterators.c:1.73.2.30.2.26
--- php-src/ext/spl/spl_iterators.c:1.73.2.30.2.25  Tue Feb 27 03:28:16 2007
+++ php-src/ext/spl/spl_iterators.c Sun Mar  4 12:18:02 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_iterators.c,v 1.73.2.30.2.25 2007/02/27 03:28:16 iliaa Exp $ */
+/* $Id: spl_iterators.c,v 1.73.2.30.2.26 2007/03/04 12:18:02 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1336,41 +1336,6 @@
spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
spl_ce_ParentIterator, 

[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c spl_iterators.c

2007-03-04 Thread Marcus Boerger
helly   Sun Mar  4 14:01:06 2007 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c spl_iterators.c 
  Log:
  - Fix copy'n'paste issues
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.18r2=1.45.2.27.2.19diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.18 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.19
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.18  Sun Mar  4 12:18:02 2007
+++ php-src/ext/spl/spl_directory.c Sun Mar  4 14:01:06 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.18 2007/03/04 12:18:02 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.19 2007/03/04 14:01:06 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1286,7 +1286,7 @@
if (!object-u.dir.dirp || 
!php_stream_readdir(object-u.dir.dirp, object-u.dir.entry)) {
object-u.dir.entry.d_name[0] = '\0';
}
-   } while (spl_filesystem_is_dot(intern-u.dir.entry.d_name));
+   } while (spl_filesystem_is_dot(object-u.dir.entry.d_name));
if (object-file_name) {
efree(object-file_name);
object-file_name = NULL;
@@ -1312,7 +1312,7 @@
if (!object-u.dir.dirp || 
!php_stream_readdir(object-u.dir.dirp, object-u.dir.entry)) {
object-u.dir.entry.d_name[0] = '\0';
}
-   } while (spl_filesystem_is_dot(intern-u.dir.entry.d_name));
+   } while (spl_filesystem_is_dot(object-u.dir.entry.d_name));
if (iterator-current) {
zval_ptr_dtor(iterator-current);
iterator-current = NULL;
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_iterators.c?r1=1.73.2.30.2.26r2=1.73.2.30.2.27diff_format=u
Index: php-src/ext/spl/spl_iterators.c
diff -u php-src/ext/spl/spl_iterators.c:1.73.2.30.2.26 
php-src/ext/spl/spl_iterators.c:1.73.2.30.2.27
--- php-src/ext/spl/spl_iterators.c:1.73.2.30.2.26  Sun Mar  4 12:18:02 2007
+++ php-src/ext/spl/spl_iterators.c Sun Mar  4 14:01:06 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_iterators.c,v 1.73.2.30.2.26 2007/03/04 12:18:02 helly Exp $ */
+/* $Id: spl_iterators.c,v 1.73.2.30.2.27 2007/03/04 14:01:06 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1688,9 +1688,9 @@
 ZEND_END_ARG_INFO();
 
 static zend_function_entry spl_funcs_RecursiveRegexIterator[] = {
-   SPL_ME(RecursiveRegexIterator, __construct,  
arginfo_rec_regex_it___construct, ZEND_ACC_PUBLIC)
-   SPL_ME(ParentIterator, hasChildren,  NULL, ZEND_ACC_PUBLIC)
-   SPL_ME(RecursiveRegexIterator, getChildren,  NULL, ZEND_ACC_PUBLIC)
+   SPL_ME(RecursiveRegexIterator,  __construct,  
arginfo_rec_regex_it___construct, ZEND_ACC_PUBLIC)
+   SPL_ME(RecursiveFilterIterator, hasChildren,  NULL, ZEND_ACC_PUBLIC)
+   SPL_ME(RecursiveRegexIterator,  getChildren,  NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
 };
 #endif

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2007-02-20 Thread Marcus Boerger
helly   Tue Feb 20 13:08:01 2007 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  - Make stat based functions throw an exception
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.14r2=1.45.2.27.2.15diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.14 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.15
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.14  Mon Feb 19 20:34:29 2007
+++ php-src/ext/spl/spl_directory.c Tue Feb 20 13:08:01 2007
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.14 2007/02/19 20:34:29 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.15 2007/02/20 13:08:01 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -679,8 +679,10 @@
 { \
spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC); \
  \
+   php_set_error_handling(EH_THROW, spl_ce_RuntimeException TSRMLS_CC);\
spl_filesystem_object_get_file_name(intern TSRMLS_CC); \
php_stat(intern-file_name, intern-file_name_len, func_num, 
return_value TSRMLS_CC); \
+   php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);\
 }
 /* }}} */
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c spl_iterators.c

2006-11-06 Thread Hannes Magnusson
bjori   Mon Nov  6 23:20:11 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_iterators.c spl_directory.c 
  Log:
  MFH: arginfo fixes
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_iterators.c?r1=1.73.2.30.2.18r2=1.73.2.30.2.19diff_format=u
Index: php-src/ext/spl/spl_iterators.c
diff -u php-src/ext/spl/spl_iterators.c:1.73.2.30.2.18 
php-src/ext/spl/spl_iterators.c:1.73.2.30.2.19
--- php-src/ext/spl/spl_iterators.c:1.73.2.30.2.18  Fri Nov  3 14:11:23 2006
+++ php-src/ext/spl/spl_iterators.c Mon Nov  6 23:20:11 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_iterators.c,v 1.73.2.30.2.18 2006/11/03 14:11:23 bjori Exp $ */
+/* $Id: spl_iterators.c,v 1.73.2.30.2.19 2006/11/06 23:20:11 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -748,18 +748,19 @@
 /* }}} */
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_recursive_it___construct, 0) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_recursive_it___construct, 0, 0, 1) 
ZEND_ARG_OBJ_INFO(0, iterator, Traversable, 0)
ZEND_ARG_INFO(0, mode)
+   ZEND_ARG_INFO(0, flags)
 ZEND_END_ARG_INFO();
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_recursive_it_getSubIterator, 0) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_recursive_it_getSubIterator, 0, 0, 0)
ZEND_ARG_INFO(0, level)
 ZEND_END_ARG_INFO();
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_recursive_it_setMaxDepth, 0) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_recursive_it_setMaxDepth, 0, 0, 0)
ZEND_ARG_INFO(0, max_depth)
 ZEND_END_ARG_INFO();
 
@@ -1528,7 +1529,7 @@
}
 } /* }}} */
 
-/* {{{ proto bool RegexIterator::setFlags(int new_flags)
+/* {{{ proto bool RegexIterator::setPregFlags(int new_flags)
Set PREG flags */
 SPL_METHOD(RegexIterator, setPregFlags)
 {
@@ -1862,7 +1863,7 @@
 };
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_limit_it___construct, 0) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_limit_it___construct, 0, 0, 1) 
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_ARG_INFO(0, offset)
ZEND_ARG_INFO(0, count)
@@ -2197,7 +2198,7 @@
 }
 /* }}} */
 
-/* {{{ proto void CachingIterator::setFlags()
+/* {{{ proto void CachingIterator::setFlags(int flags)
Set the internal flags */
 SPL_METHOD(CachingIterator, setFlags)
 {
@@ -2231,7 +2232,7 @@
 /* }}} */
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_caching_it___construct, 0) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_caching_it___construct, 0, 0, 1) 
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_ARG_INFO(0, flags)
 ZEND_END_ARG_INFO();
@@ -2242,12 +2243,12 @@
 ZEND_END_ARG_INFO();
 
 static
-ZEND_BEGIN_ARG_INFO_EX(arginfo_caching_it_offsetGet, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO(arginfo_caching_it_offsetGet, 0)
ZEND_ARG_INFO(0, index)
 ZEND_END_ARG_INFO();
 
 static
-ZEND_BEGIN_ARG_INFO_EX(arginfo_caching_it_offsetSet, 0, 0, 2)
+ZEND_BEGIN_ARG_INFO(arginfo_caching_it_offsetSet, 0)
ZEND_ARG_INFO(0, index)
ZEND_ARG_INFO(0, newval)
 ZEND_END_ARG_INFO();
@@ -2306,7 +2307,7 @@
 } /* }}} */
 
 static
-ZEND_BEGIN_ARG_INFO_EX(arginfo_caching_rec_it___construct, 0, 
ZEND_RETURN_VALUE, 2) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_caching_rec_it___construct, 0, 
ZEND_RETURN_VALUE, 1) 
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_ARG_INFO(0, flags)
 ZEND_END_ARG_INFO();
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.9r2=1.45.2.27.2.10diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.9 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.10
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.9   Mon Nov  6 15:21:45 2006
+++ php-src/ext/spl/spl_directory.c Mon Nov  6 23:20:11 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.9 2006/11/06 15:21:45 bjori Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.10 2006/11/06 23:20:11 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1327,18 +1327,23 @@
 };
 
 static
-ZEND_BEGIN_ARG_INFO(arginfo_r_dir___construct, 0) 
+ZEND_BEGIN_ARG_INFO_EX(arginfo_r_dir___construct, 0, 0, 1) 
ZEND_ARG_INFO(0, path)
ZEND_ARG_INFO(0, flags)
 ZEND_END_ARG_INFO()
 
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_r_dir_hasChildren, 0, 0, 0)
+   ZEND_ARG_INFO(0, allow_links)
+ZEND_END_ARG_INFO()
+
 static zend_function_entry spl_RecursiveDirectoryIterator_functions[] = {
SPL_ME(RecursiveDirectoryIterator, __construct,   
arginfo_r_dir___construct, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, rewind,NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, next,  NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, key,   NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, current,   NULL, ZEND_ACC_PUBLIC)
-   SPL_ME(RecursiveDirectoryIterator, hasChildren,   NULL, ZEND_ACC_PUBLIC)
+   

[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2006-09-29 Thread Antony Dovgal
tony2001Fri Sep 29 12:18:58 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  MFH
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.5r2=1.45.2.27.2.6diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.5 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.6
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.5   Sun Aug  6 13:47:51 2006
+++ php-src/ext/spl/spl_directory.c Fri Sep 29 12:18:58 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.5 2006/08/06 13:47:51 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.6 2006/09/29 12:18:58 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -2224,12 +2224,12 @@
REGISTER_SPL_IMPLEMENTS(SplFileObject, RecursiveIterator);
REGISTER_SPL_IMPLEMENTS(SplFileObject, SeekableIterator);
 
-   REGISTER_SPL_SUB_CLASS_EX(SplTempFileObject, SplFileObject, 
spl_filesystem_object_new, spl_SplTempFileObject_functions);
-
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, DROP_NEW_LINE, 
SPL_FILE_OBJECT_DROP_NEW_LINE);
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, READ_AHEAD,
SPL_FILE_OBJECT_READ_AHEAD);
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, SKIP_EMPTY,
SPL_FILE_OBJECT_SKIP_EMPTY);
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, READ_CSV,  
SPL_FILE_OBJECT_READ_CSV);
+   
+   REGISTER_SPL_SUB_CLASS_EX(SplTempFileObject, SplFileObject, 
spl_filesystem_object_new, spl_SplTempFileObject_functions);
return SUCCESS;
 }
 /* }}} */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2006-09-29 Thread Hannes Magnusson
bjori   Fri Sep 29 12:29:21 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  fix arginfo
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.6r2=1.45.2.27.2.7diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.6 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.7
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.6   Fri Sep 29 12:18:58 2006
+++ php-src/ext/spl/spl_directory.c Fri Sep 29 12:29:21 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.6 2006/09/29 12:18:58 tony2001 Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.7 2006/09/29 12:29:21 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -2182,7 +2182,7 @@
 };
 
 static
-ZEND_BEGIN_ARG_INFO_EX(arginfo_temp_file_object___construct, 0, 0, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_temp_file_object___construct, 0, 0, 0)
ZEND_ARG_INFO(0, max_memory)
 ZEND_END_ARG_INFO()
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c /ext/standard streamsfuncs.c

2006-09-29 Thread Hannes Magnusson
bjori   Fri Sep 29 13:11:28 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/standard   streamsfuncs.c 
/php-src/ext/splspl_directory.c 
  Log:
  fix protos
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.c?r1=1.58.2.6.2.6r2=1.58.2.6.2.7diff_format=u
Index: php-src/ext/standard/streamsfuncs.c
diff -u php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.6 
php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.7
--- php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.6Mon Sep 11 14:52:21 2006
+++ php-src/ext/standard/streamsfuncs.c Fri Sep 29 13:11:27 2006
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: streamsfuncs.c,v 1.58.2.6.2.6 2006/09/11 14:52:21 iliaa Exp $ */
+/* $Id: streamsfuncs.c,v 1.58.2.6.2.7 2006/09/29 13:11:27 bjori Exp $ */
 
 #include php.h
 #include php_globals.h
@@ -450,7 +450,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource stream_get_meta_data(resource fp)
+/* {{{ proto array stream_get_meta_data(resource fp)
 Retrieves header/meta data from streams/file pointers */
 PHP_FUNCTION(stream_get_meta_data)
 {
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.7r2=1.45.2.27.2.8diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.7 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.8
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.7   Fri Sep 29 12:29:21 2006
+++ php-src/ext/spl/spl_directory.c Fri Sep 29 13:11:28 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.7 2006/09/29 12:29:21 bjori Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.8 2006/09/29 13:11:28 bjori Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -1605,7 +1605,7 @@
php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
 } /* }}} */
 
-/* {{{ proto void SplFileObject::__construct([int max_memory])
+/* {{{ proto void SplTempFileObject::__construct([int max_memory])
Construct a new temp file object */
 SPL_METHOD(SplTempFileObject, __construct)
 {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c /ext/spl/tests fileobject_003.phpt

2006-07-15 Thread Marcus Boerger
helly   Sat Jul 15 13:01:59 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
/php-src/ext/spl/tests  fileobject_003.phpt 
  Log:
  - MFH Fix issue with SplFileObject and directories
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.2r2=1.45.2.27.2.3diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.2 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.3
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.2   Mon Jul 10 15:47:58 2006
+++ php-src/ext/spl/spl_directory.c Sat Jul 15 13:01:59 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.2 2006/07/10 15:47:58 dmitry Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.3 2006/07/15 13:01:59 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -205,9 +205,9 @@
intern-u.file.context = 
php_stream_context_from_zval(intern-u.file.zcontext, 0);
intern-u.file.stream = php_stream_open_wrapper_ex(intern-file_name, 
intern-u.file.open_mode, (use_include_path ? USE_PATH : 0) | ENFORCE_SAFE_MODE 
| REPORT_ERRORS, NULL, intern-u.file.context);
 
-   if (intern-u.file.stream == NULL) {
+   if (!intern-file_name_len || !intern-u.file.stream) {
if (!EG(exception)) {
-   zend_throw_exception_ex(spl_ce_RuntimeException, 0 
TSRMLS_CC, Cannot open file %s, intern-file_name);
+   zend_throw_exception_ex(spl_ce_RuntimeException, 0 
TSRMLS_CC, Cannot open file '%s', intern-file_name_len ? intern-file_name : 
);
}
intern-file_name = NULL; /* until here it is not a copy */
intern-u.file.open_mode = NULL;
@@ -218,6 +218,14 @@
zend_list_addref(Z_RESVAL_P(intern-u.file.zcontext));
}
 
+   if (intern-file_name[intern-file_name_len-1] == '/'
+#if defined(PHP_WIN32) || defined(NETWARE)
+ ||intern-file_name[intern-file_name_len-1] == '\\'
+#endif
+   ) {
+   intern-file_name_len--;
+   }
+
intern-file_name = estrndup(intern-file_name, intern-file_name_len);
intern-u.file.open_mode = estrndup(intern-u.file.open_mode, 
intern-u.file.open_mode_len);
 
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/tests/fileobject_003.phpt?r1=1.1.2.2r2=1.1.2.3diff_format=u
Index: php-src/ext/spl/tests/fileobject_003.phpt
diff -u php-src/ext/spl/tests/fileobject_003.phpt:1.1.2.2 
php-src/ext/spl/tests/fileobject_003.phpt:1.1.2.3
--- php-src/ext/spl/tests/fileobject_003.phpt:1.1.2.2   Sat Jul  8 12:25:57 2006
+++ php-src/ext/spl/tests/fileobject_003.phpt   Sat Jul 15 13:01:59 2006
@@ -5,7 +5,7 @@
 --FILE--
 ?php
 
-function test($name)
+function test($name, $lc, $lp)
 {
static $i = 0;
echo ===$i===\n;
@@ -19,10 +19,23 @@
var_dump($o === $c);
var_dump($o == $c);
var_dump($o-getPathname() == $c-getPathname());
+   
+   $f = new SplFileObject($name);
+   var_dump($name);
+   var_dump($f-getPathName());
+   $l = substr($f-getPathName(), -1);
+   var_dump($l != '/'  $l != '\\'  $l == $lc);
+   var_dump($f-getFileName());
+   $l = substr($f-getFileName(), -1);
+   var_dump($l != '/'  $l != '\\'  $l == $lc);
+   var_dump($f-getPath());
+   $l = substr($f-getPath(), -1);
+   var_dump($l != '/'  $l != '\\'  $l == $lp);
 }
 
-test(dirname(__FILE__) . '/' . 'fileobject_001a.txt');
-test(dirname(__FILE__) . '/');
+test(dirname(__FILE__) . '/' . 'fileobject_001a.txt', 't', 
substr(dirname(__FILE__),-1));
+test(dirname(__FILE__) . '/', substr(dirname(__FILE__),-1), 'l');
+test(dirname(__FILE__),   substr(dirname(__FILE__),-1), 'l');
 
 ?
 ===DONE===
@@ -36,6 +49,13 @@
 bool(false)
 bool(true)
 bool(true)
+string(%d) %sfileobject_001a.txt
+string(%d) %sfileobject_001a.txt
+bool(true)
+string(%d) %sfileobject_001a.txt
+bool(true)
+string(%d) %stests
+bool(true)
 ===1===
 object(SplFileInfo)#%d (0) {
 }
@@ -44,4 +64,26 @@
 bool(false)
 bool(true)
 bool(true)
+string(%d) %stests/
+string(%d) %stests
+bool(true)
+string(%d) %stests
+bool(true)
+string(%d) %sspl
+bool(true)
+===2===
+object(SplFileInfo)#1 (0) {
+}
+object(SplFileInfo)#2 (0) {
+}
+bool(false)
+bool(true)
+bool(true)
+string(%d) %stests
+string(%d) %stests
+bool(true)
+string(%d) %stests
+bool(true)
+string(%d) %sspl
+bool(true)
 ===DONE===

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c

2006-07-10 Thread Dmitry Stogov
dmitry  Mon Jul 10 15:47:58 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c 
  Log:
  Fixed memory leaks in ext/spl/tests/fileobject_003.phpt
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.1r2=1.45.2.27.2.2diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.1 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.2
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.1   Wed May 10 00:31:04 2006
+++ php-src/ext/spl/spl_directory.c Mon Jul 10 15:47:58 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.1 2006/05/10 00:31:04 helly Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.2 2006/07/10 15:47:58 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -254,8 +254,8 @@
 
switch (source-type) {
case SPL_FS_INFO:
-   source-path_len = source-path_len;
-   source-path = estrndup(source-path, source-path_len);
+   intern-path_len = source-path_len;
+   intern-path = estrndup(source-path, source-path_len);
intern-file_name_len = source-file_name_len;
intern-file_name = estrndup(source-file_name, 
intern-file_name_len);
break;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_2) /ext/spl spl_directory.c spl_directory.h

2006-05-09 Thread Marcus Boerger
helly   Wed May 10 00:31:04 2006 UTC

  Modified files:  (Branch: PHP_5_2)
/php-src/ext/splspl_directory.c spl_directory.h 
  Log:
  - MFH: SplFileObject improvements
. FILE_OBJECT_READ_AHEAD: allow to read ahead
. FILE_OBJECT_SKIP_EMPTY: allow to skip empty lines (includes read ahead)
. FILE_OBJECT_READ_CSV:   allow to read as csv
  
  http://cvs.php.net/viewcvs.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27r2=1.45.2.27.2.1diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.1
--- php-src/ext/spl/spl_directory.c:1.45.2.27   Thu Apr  6 19:01:56 2006
+++ php-src/ext/spl/spl_directory.c Wed May 10 00:31:04 2006
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27 2006/04/06 19:01:56 tony2001 Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27.2.1 2006/05/10 00:31:04 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include config.h
@@ -990,10 +990,16 @@
 };
 
 /* {{{ spl_ce_dir_get_iterator */
-zend_object_iterator *spl_filesystem_dir_get_iterator(zend_class_entry *ce, 
zval *object TSRMLS_DC)
+zend_object_iterator *spl_filesystem_dir_get_iterator(zend_class_entry *ce, 
zval *object, int by_ref TSRMLS_DC)
 {
-   spl_filesystem_dir_it *iterator   = 
emalloc(sizeof(spl_filesystem_dir_it));
-   spl_filesystem_object *dir_object = 
(spl_filesystem_object*)zend_object_store_get_object(object TSRMLS_CC);
+   spl_filesystem_dir_it *iterator;
+   spl_filesystem_object *dir_object;
+
+   if (by_ref) {
+   zend_error(E_ERROR, An iterator cannot be used with foreach by 
reference);
+   }
+   iterator   = emalloc(sizeof(spl_filesystem_dir_it));
+   dir_object = 
(spl_filesystem_object*)zend_object_store_get_object(object TSRMLS_CC);
 
object-refcount += 2;;
iterator-intern.data = (void*)object;
@@ -1195,10 +1201,16 @@
 };
 
 /* {{{ spl_ce_dir_get_iterator */
-zend_object_iterator *spl_filesystem_tree_get_iterator(zend_class_entry *ce, 
zval *object TSRMLS_DC)
+zend_object_iterator *spl_filesystem_tree_get_iterator(zend_class_entry *ce, 
zval *object, int by_ref TSRMLS_DC)
 {
-   spl_filesystem_dir_it *iterator   = 
emalloc(sizeof(spl_filesystem_dir_it));
-   spl_filesystem_object *dir_object = 
(spl_filesystem_object*)zend_object_store_get_object(object TSRMLS_CC);
+   spl_filesystem_dir_it *iterator;
+   spl_filesystem_object *dir_object;
+
+   if (by_ref) {
+   zend_error(E_ERROR, An iterator cannot be used with foreach by 
reference);
+   }
+   iterator   = emalloc(sizeof(spl_filesystem_dir_it));
+   dir_object = 
(spl_filesystem_object*)zend_object_store_get_object(object TSRMLS_CC);
 
object-refcount++;
iterator-intern.data = (void*)object;
@@ -1211,14 +1223,10 @@
 /* }}} */
 
 /* {{{ spl_filesystem_object_cast */
-static int spl_filesystem_object_cast(zval *readobj, zval *writeobj, int type, 
int should_free TSRMLS_DC)
+static int spl_filesystem_object_cast(zval *readobj, zval *writeobj, int type 
TSRMLS_DC)
 {
spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(readobj TSRMLS_CC);
 
-   if (should_free) {
-   zval_dtor(readobj);
-   }
-
if (type == IS_STRING) {
switch (intern-type) {
case SPL_FS_INFO:
@@ -1374,19 +1382,89 @@
return SUCCESS;
 } /* }}} */
 
-static int spl_filesystem_file_read_line(zval * this_ptr, 
spl_filesystem_object *intern, int silent TSRMLS_DC) /* {{{ */
+static int spl_filesystem_file_call(spl_filesystem_object *intern, 
zend_function *func_ptr, int pass_num_args, zval *return_value, zval *arg2 
TSRMLS_DC) /* {{{ */
+{
+   zend_fcall_info fci;
+   zend_fcall_info_cache fcic;
+   zval z_fname;
+   zval * zresource_ptr = intern-u.file.zresource, *retval;
+   int result;
+   int num_args = pass_num_args + (arg2 ? 2 : 1);
+
+   zval ***params = (zval***)safe_emalloc(num_args, sizeof(zval**), 0);
+
+   params[0] = zresource_ptr;
+   
+   if (arg2) {
+   params[1] = arg2;
+   }
+
+   zend_get_parameters_array_ex(pass_num_args, params+(arg2 ? 2 : 1));
+
+   ZVAL_STRING(z_fname, func_ptr-common.function_name, 0);
+
+   fci.size = sizeof(fci);
+   fci.function_table = EG(function_table);
+   fci.object_pp = NULL;
+   fci.function_name = z_fname;
+   fci.retval_ptr_ptr = retval;
+   fci.param_count = num_args;
+   fci.params = params;
+   fci.no_separation = 1;
+   fci.symbol_table = NULL;
+
+   fcic.initialized = 1;
+   fcic.function_handler = func_ptr;
+   fcic.calling_scope = NULL;
+   fcic.object_pp = NULL;
+
+   result = zend_call_function(fci, fcic TSRMLS_CC);
+   
+   ZVAL_ZVAL(return_value, retval, 1, 1);
+
+   efree(params);
+