helly           Sat Mar  3 14:37:17 2007 UTC

  Modified files:              
    /php-src/ext/spl    spl_directory.c 
  Log:
  - [DOC] Add SplInfo::getBasename(), DirectoryIterator::getBasename()
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.121&r2=1.122&diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.121 
php-src/ext/spl/spl_directory.c:1.122
--- php-src/ext/spl/spl_directory.c:1.121       Mon Feb 26 22:46:13 2007
+++ php-src/ext/spl/spl_directory.c     Sat Mar  3 14:37:17 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.c,v 1.121 2007/02/26 22:46:13 helly Exp $ */
+/* $Id: spl_directory.c,v 1.122 2007/03/03 14:37:17 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -656,6 +656,53 @@
 }
 /* }}} */
 
+/* {{{ proto string SplFileInfo::getBasename([string $suffix]) U
+   Returns filename component of path */
+SPL_METHOD(SplFileInfo, getBasename)
+{
+       spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
+       zstr fname, suffix;
+       int flen, slen = 0;
+
+       suffix.v = 0;
+       if (intern->file_name_type == IS_UNICODE) {     
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|t", 
&suffix.u, &slen) == FAILURE) {
+                       return;
+               }
+       } else {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", 
&suffix.s, &slen) == FAILURE) {
+                       return;
+               }
+       }
+
+       if (intern->file_name_type == IS_UNICODE) {     
+               php_u_basename(fname.u, flen, suffix.u, slen, &fname.u, &flen 
TSRMLS_CC);
+       } else {
+               php_basename(fname.s, flen, suffix.s, slen, &fname.s, &flen 
TSRMLS_CC);
+       }
+
+       RETURN_ZSTRL(intern->file_name_type, fname, flen, 0);
+}
+/* }}}*/   
+
+/* {{{ proto string DirectoryIterator::getBasename([string $suffix]) U
+   Returns filename component of current dir entry */
+SPL_METHOD(DirectoryIterator, getBasename)
+{
+       spl_filesystem_object *intern = 
(spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
+       char *suffix = 0, *fname;
+       int slen = 0, flen;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &suffix, 
&slen) == FAILURE) {
+               return;
+       }
+
+       php_basename(intern->u.dir.entry.d_name, 
strlen(intern->u.dir.entry.d_name), suffix, slen, &fname, &flen TSRMLS_CC);
+
+       RETURN_RT_STRINGL(fname, flen, ZSTR_AUTOFREE);
+}
+/* }}} */
+
 /* {{{ proto string SplFileInfo::getPathname() U
    Return path and filename */
 SPL_METHOD(SplFileInfo, getPathname)
@@ -1452,12 +1499,18 @@
        ZEND_ARG_INFO(0, class_name)
 ZEND_END_ARG_INFO()
 
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_optinalSuffix, 0, 0, 0)
+       ZEND_ARG_INFO(0, suffix)
+ZEND_END_ARG_INFO()
+
 /* the method table */
 /* each method can have its own parameters and visibility */
 static zend_function_entry spl_SplFileInfo_functions[] = {
        SPL_ME(SplFileInfo,       __construct,   arginfo_info___construct, 
ZEND_ACC_PUBLIC)
        SPL_ME(SplFileInfo,       getPath,       NULL, ZEND_ACC_PUBLIC)
        SPL_ME(SplFileInfo,       getFilename,   NULL, ZEND_ACC_PUBLIC)
+       SPL_ME(SplFileInfo,       getBasename,   arginfo_optinalSuffix, 
ZEND_ACC_PUBLIC)
        SPL_ME(SplFileInfo,       getPathname,   NULL, ZEND_ACC_PUBLIC)
        SPL_ME(SplFileInfo,       getPerms,      NULL, ZEND_ACC_PUBLIC)
        SPL_ME(SplFileInfo,       getInode,      NULL, ZEND_ACC_PUBLIC)
@@ -1495,6 +1548,7 @@
 static zend_function_entry spl_DirectoryIterator_functions[] = {
        SPL_ME(DirectoryIterator, __construct,   arginfo_dir___construct, 
ZEND_ACC_PUBLIC)
        SPL_ME(DirectoryIterator, getFilename,   NULL, ZEND_ACC_PUBLIC)
+       SPL_ME(DirectoryIterator, getBasename,   arginfo_optinalSuffix, 
ZEND_ACC_PUBLIC)
        SPL_ME(DirectoryIterator, isDot,         NULL, ZEND_ACC_PUBLIC)
        SPL_ME(DirectoryIterator, rewind,        NULL, ZEND_ACC_PUBLIC)
        SPL_ME(DirectoryIterator, valid,         NULL, ZEND_ACC_PUBLIC)

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

Reply via email to