hi, Please add it to UPGRADING too :)
Cheers, On Fri, Feb 11, 2011 at 11:07 PM, Peter Cowburn <sala...@php.net> wrote: > salathe Fri, 11 Feb 2011 22:07:22 +0000 > > Revision: http://svn.php.net/viewvc?view=revision&revision=308264 > > Log: > MFH - Added SplFileInfo::getExtension() (FR #48767) > > Bug: http://bugs.php.net/48767 (To be documented) SplFileInfo::getExtension() > > Changed paths: > U php/php-src/branches/PHP_5_3/NEWS > U php/php-src/branches/PHP_5_3/UPGRADING > U php/php-src/branches/PHP_5_3/ext/spl/spl_directory.c > A > php/php-src/branches/PHP_5_3/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt > A > php/php-src/branches/PHP_5_3/ext/spl/tests/SplFileInfo_getExtension_basic.phpt > > Modified: php/php-src/branches/PHP_5_3/NEWS > =================================================================== > --- php/php-src/branches/PHP_5_3/NEWS 2011-02-11 21:13:16 UTC (rev 308263) > +++ php/php-src/branches/PHP_5_3/NEWS 2011-02-11 22:07:22 UTC (rev 308264) > @@ -148,7 +148,8 @@ > . Fixed bug #53914 (SPL assumes HAVE_GLOB is defined). (Chris Jones) > . Fixed bug #53515 (property_exists incorrect on ArrayObject null and 0 > values). (Felipe) > - > + . Added SplFileInfo::getExtension(). FR #48767. (Peter Cowburn) > + > - SQLite3 extension: > . Fixed memory leaked introduced by the NULL poisoning patch. > (Mateusz Kocielski, Pierre) > > Modified: php/php-src/branches/PHP_5_3/UPGRADING > =================================================================== > --- php/php-src/branches/PHP_5_3/UPGRADING 2011-02-11 21:13:16 UTC (rev > 308263) > +++ php/php-src/branches/PHP_5_3/UPGRADING 2011-02-11 22:07:22 UTC (rev > 308264) > @@ -670,7 +670,9 @@ > ReflectionClass::inNamespace() > ReflectionClass::getNamespaceName() > ReflectionClass::getShortName() > - - SPL SplObjectStorage::addAll() > + - SPL: DirectoryIterator::getExtension() > + SplFileObject::getExtension() > + SplObjectStorage::addAll() > SplObjectStorage::removeAll() > - XSL: XSLTProcessor::setProfiling() > > > Modified: php/php-src/branches/PHP_5_3/ext/spl/spl_directory.c > =================================================================== > --- php/php-src/branches/PHP_5_3/ext/spl/spl_directory.c 2011-02-11 > 21:13:16 UTC (rev 308263) > +++ php/php-src/branches/PHP_5_3/ext/spl/spl_directory.c 2011-02-11 > 22:07:22 UTC (rev 308264) > @@ -849,6 +849,66 @@ > } > /* }}} */ > > +/* {{{ proto string SplFileInfo::getExtension() > + Returns file extension component of path */ > +SPL_METHOD(SplFileInfo, getExtension) > +{ > + spl_filesystem_object *intern = > (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC); > + char *fname, *p; > + size_t flen; > + int path_len, idx; > + > + if (zend_parse_parameters_none() == FAILURE) { > + return; > + } > + > + spl_filesystem_object_get_path(intern, &path_len TSRMLS_CC); > + > + if (path_len && path_len < intern->file_name_len) { > + fname = intern->file_name + path_len + 1; > + flen = intern->file_name_len - (path_len + 1); > + } else { > + fname = intern->file_name; > + flen = intern->file_name_len; > + } > + > + php_basename(fname, flen, NULL, 0, &fname, &flen TSRMLS_CC); > + > + p = zend_memrchr(fname, '.', flen); > + if (p) { > + idx = p - fname; > + RETURN_STRINGL(fname + idx + 1, flen - idx - 1, 1); > + } > + > + RETURN_EMPTY_STRING(); > +} > +/* }}}*/ > + > +/* {{{ proto string DirectoryIterator::getExtension() > + Returns the file extension component of path */ > +SPL_METHOD(DirectoryIterator, getExtension) > +{ > + spl_filesystem_object *intern = > (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC); > + char *fname, *p; > + size_t flen; > + int idx; > + > + if (zend_parse_parameters_none() == FAILURE) { > + return; > + } > + > + php_basename(intern->u.dir.entry.d_name, > strlen(intern->u.dir.entry.d_name), NULL, 0, &fname, &flen TSRMLS_CC); > + > + p = zend_memrchr(fname, '.', flen); > + if (p) { > + idx = p - fname; > + RETURN_STRINGL(fname + idx + 1, flen - idx - 1, 1); > + } > + > + RETURN_EMPTY_STRING(); > +} > +/* }}} */ > + > /* {{{ proto string SplFileInfo::getBasename([string $suffix]) U > Returns filename component of path */ > SPL_METHOD(SplFileInfo, getBasename) > @@ -1786,6 +1846,7 @@ > SPL_ME(SplFileInfo, __construct, arginfo_info___construct, > ZEND_ACC_PUBLIC) > SPL_ME(SplFileInfo, getPath, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > SPL_ME(SplFileInfo, getFilename, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > + SPL_ME(SplFileInfo, getExtension, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > SPL_ME(SplFileInfo, getBasename, arginfo_optinalSuffix, > ZEND_ACC_PUBLIC) > SPL_ME(SplFileInfo, getPathname, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > SPL_ME(SplFileInfo, getPerms, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > @@ -1829,6 +1890,7 @@ > static const zend_function_entry spl_DirectoryIterator_functions[] = { > SPL_ME(DirectoryIterator, __construct, arginfo_dir___construct, > ZEND_ACC_PUBLIC) > SPL_ME(DirectoryIterator, getFilename, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > + SPL_ME(DirectoryIterator, getExtension, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > SPL_ME(DirectoryIterator, getBasename, arginfo_optinalSuffix, > ZEND_ACC_PUBLIC) > SPL_ME(DirectoryIterator, isDot, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > SPL_ME(DirectoryIterator, rewind, arginfo_splfileinfo_void, > ZEND_ACC_PUBLIC) > > Added: > php/php-src/branches/PHP_5_3/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt > =================================================================== > --- > php/php-src/branches/PHP_5_3/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt > (rev 0) > +++ > php/php-src/branches/PHP_5_3/ext/spl/tests/DirectoryIterator_getExtension_basic.phpt > 2011-02-11 22:07:22 UTC (rev 308264) > @@ -0,0 +1,51 @@ > +--TEST-- > +SPL: DirectoryIterator::getExtension() basic test > +--FILE-- > +<?php > +$dir = __DIR__ . DIRECTORY_SEPARATOR . > md5('DirectoryIterator::getExtension') . DIRECTORY_SEPARATOR; > +mkdir($dir); > + > +$files = array('test.txt', 'test.extension', 'test..', 'test.', 'test'); > +foreach ($files as $file) { > + touch($dir . $file); > +} > + > +$dit_exts = array(); > +$nfo_exts = array(); > +$skip = array('.', '..'); > + > +foreach (new DirectoryIterator($dir) as $file) { > + if (in_array($file->getFilename(), $skip)) { > + continue; > + } > + $dit_exts[] = $file->getExtension(); > + $nfo_exts[] = pathinfo($file->getFilename(), PATHINFO_EXTENSION); > +} > +var_dump($dit_exts === $nfo_exts); > +sort($dit_exts); > +var_dump($dit_exts); > +?> > +--CLEAN-- > +<?php > +$dir = __DIR__ . DIRECTORY_SEPARATOR . > md5('DirectoryIterator::getExtension') . DIRECTORY_SEPARATOR; > +$files = array('test.txt', 'test.extension', 'test..', 'test.', 'test'); > +foreach ($files as $file) { > + unlink($dir . $file); > +} > +rmdir($dir); > +?> > +--EXPECTF-- > +bool(true) > +array(5) { > + [0]=> > + string(0) "" > + [1]=> > + string(0) "" > + [2]=> > + string(0) "" > + [3]=> > + string(9) "extension" > + [4]=> > + string(3) "txt" > +} > + > > Added: > php/php-src/branches/PHP_5_3/ext/spl/tests/SplFileInfo_getExtension_basic.phpt > =================================================================== > --- > php/php-src/branches/PHP_5_3/ext/spl/tests/SplFileInfo_getExtension_basic.phpt > (rev 0) > +++ > php/php-src/branches/PHP_5_3/ext/spl/tests/SplFileInfo_getExtension_basic.phpt > 2011-02-11 22:07:22 UTC (rev 308264) > @@ -0,0 +1,31 @@ > +--TEST-- > +SPL: SplFileInfo::getExtension() basic test > +--FILE-- > +<?php > +$file = md5('SplFileInfo::getExtension'); > +$exts = array('.txt', '.extension', '..', '.', ''); > +foreach ($exts as $ext) { > + touch($file . $ext); > + $info = new SplFileInfo($file . $ext); > + var_dump($info->getExtension(), pathinfo($file . $ext, > PATHINFO_EXTENSION)); > +} > +?> > +--CLEAN-- > +<?php > +$file = md5('SplFileInfo::getExtension'); > +$exts = array('.txt', '.extension', '..', '.', ''); > +foreach ($exts as $ext) { > + unlink($file . $ext); > +} > +?> > +--EXPECTF-- > +string(3) "txt" > +string(3) "txt" > +string(9) "extension" > +string(9) "extension" > +string(0) "" > +string(0) "" > +string(0) "" > +string(0) "" > +string(0) "" > +string(0) "" > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- Pierre @pierrejoye | http://blog.thepimp.net | http://www.libgd.org -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php