}
/* }}} */
-/* {{{ proto void RecursiveDirectoryIterator::rewind()
+/* {{{ proto void RecursiveDirectoryIterator::getSubPath()
Get sub path */
SPL_METHOD(RecursiveDirectoryIterator, getSubPath)
{
}
/* }}} */
+/* {{{ proto void RecursiveDirectoryIterator::getSubPathname()
+ Get sub path and file name */
+SPL_METHOD(RecursiveDirectoryIterator, getSubPathname)
+{
+ zval *object = getThis();
+ spl_ce_dir_object *intern = (spl_ce_dir_object*)zend_object_store_get_object(object TSRMLS_CC);
+ char *sub_name;
+ int len;
+
+ if (intern->sub_path) {
+ len = spprintf(&sub_name, 0, "%s/%s", intern->sub_path, intern->entry.d_name);
+ RETURN_STRINGL(sub_name, len, 0);
+ } else {
+ RETURN_STRING(intern->entry.d_name, 1);
+ }
+}
+/* }}} */
+
/* define an overloaded iterator structure */
typedef struct {
zend_object_iterator intern;
SPL_ME(RecursiveDirectoryIterator, hasChildren, NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, getSubPath, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(RecursiveDirectoryIterator, getSubPathname,NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};