helly Sat Jul 15 13:01:44 2006 UTC Modified files: /php-src/ext/spl spl_directory.c /php-src/ext/spl/tests fileobject_003.phpt Log: - Fix issue with SplFileObject and directories http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.92&r2=1.93&diff_format=u Index: php-src/ext/spl/spl_directory.c diff -u php-src/ext/spl/spl_directory.c:1.92 php-src/ext/spl/spl_directory.c:1.93 --- php-src/ext/spl/spl_directory.c:1.92 Mon Jul 10 15:48:09 2006 +++ php-src/ext/spl/spl_directory.c Sat Jul 15 13:01:44 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_directory.c,v 1.92 2006/07/10 15:48:09 dmitry Exp $ */ +/* $Id: spl_directory.c,v 1.93 2006/07/15 13:01:44 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) | 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); } 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&r2=1.2&diff_format=u Index: php-src/ext/spl/tests/fileobject_003.phpt diff -u php-src/ext/spl/tests/fileobject_003.phpt:1.1 php-src/ext/spl/tests/fileobject_003.phpt:1.2 --- php-src/ext/spl/tests/fileobject_003.phpt:1.1 Sat Jul 8 11:43:07 2006 +++ php-src/ext/spl/tests/fileobject_003.phpt Sat Jul 15 13:01:44 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) +%s(%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) +%s(%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) +%s(%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