- improve r316420 (SplFileObject cannot and should not accept directories)

This commit is contained in:
Pierre Joye 2011-09-08 23:07:48 +00:00
parent e81fed3df5
commit 38c698c062
2 changed files with 20 additions and 9 deletions

View File

@ -251,7 +251,18 @@ static void spl_filesystem_dir_open(spl_filesystem_object* intern, char *path TS
static int spl_filesystem_file_open(spl_filesystem_object *intern, int use_include_path, int silent TSRMLS_DC) /* {{{ */
{
zval tmp;
intern->type = SPL_FS_FILE;
php_stat(intern->file_name, intern->file_name_len, FS_IS_DIR, &tmp TSRMLS_CC);
if (Z_LVAL(tmp)) {
intern->u.file.open_mode = NULL;
intern->file_name = NULL;
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Cannot use SplFileObject with directories");
return;
}
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);

View File

@ -33,8 +33,12 @@ function test($name, $lc, $lp)
} catch (LogicException $e) {
echo "LogicException: ".$e->getMessage()."\n";
}
try {
$fo = $o->openFile();
var_dump($fo->getPathName(), $fo->getFileName(), $fo->getPath());
} catch (LogicException $e) {
echo "LogicException: ".$e->getMessage()."\n";
}
}
test(dirname(__FILE__) . '/' . 'fileobject_001a.txt', 't', substr(dirname(__FILE__),-1));
@ -88,9 +92,7 @@ bool(false)
bool(true)
bool(true)
LogicException: Cannot use SplFileObject with directories
string(%d) "%stests"
string(%d) "tests"
string(%d) "%sspl"
LogicException: Cannot use SplFileObject with directories
===2===
object(SplFileInfo)#%d (2) {
["pathName":"SplFileInfo":private]=>
@ -108,7 +110,5 @@ bool(false)
bool(true)
bool(true)
LogicException: Cannot use SplFileObject with directories
string(%d) "%stests"
string(5) "tests"
string(%d) "%sspl"
LogicException: Cannot use SplFileObject with directories
===DONE===