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)