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

Reply via email to