pollita Mon Oct 2 18:14:43 2006 UTC
Modified files:
/php-src/ext/standard dir.c
Log:
Update glob() for PHP6
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dir.c?r1=1.156&r2=1.157&diff_format=u
Index: php-src/ext/standard/dir.c
diff -u php-src/ext/standard/dir.c:1.156 php-src/ext/standard/dir.c:1.157
--- php-src/ext/standard/dir.c:1.156 Mon Oct 2 17:45:30 2006
+++ php-src/ext/standard/dir.c Mon Oct 2 18:14:42 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dir.c,v 1.156 2006/10/02 17:45:30 pollita Exp $ */
+/* $Id: dir.c,v 1.157 2006/10/02 18:14:42 pollita Exp $ */
/* {{{ includes/startup/misc */
@@ -377,7 +377,7 @@
/* }}} */
#ifdef HAVE_GLOB
-/* {{{ proto array glob(string pattern [, int flags])
+/* {{{ proto array glob(string pattern [, int flags]) U
Find pathnames matching a pattern */
PHP_FUNCTION(glob)
{
@@ -387,6 +387,7 @@
char work_pattern[MAXPATHLEN];
char *result;
#endif
+ zval **pppattern;
char *pattern = NULL;
int pattern_len;
long flags = 0;
@@ -394,8 +395,10 @@
unsigned int n;
int ret;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &pattern,
&pattern_len, &flags) == FAILURE)
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|l", &pppattern,
&flags) == FAILURE ||
+ php_stream_path_param_encode(pppattern, &pattern, &pattern_len,
REPORT_ERRORS, FG(default_context)) == FAILURE) {
return;
+ }
#ifdef ZTS
if (!IS_ABSOLUTE_PATH(pattern, pattern_len)) {
@@ -469,7 +472,20 @@
continue;
}
}
- add_next_index_rt_string(return_value,
globbuf.gl_pathv[n]+cwd_skip, 1);
+ if (UG(unicode)) {
+ UChar *path;
+ int path_len;
+
+ if (SUCCESS ==
php_stream_path_decode(&php_plain_files_wrapper, &path, &path_len,
globbuf.gl_pathv[n]+cwd_skip,
+
strlen(globbuf.gl_pathv[n]+cwd_skip), REPORT_ERRORS, FG(default_context))) {
+ add_next_index_unicodel(return_value, path,
path_len, 0);
+ } else {
+ /* Fallback on string version, path_decode will
emit warning */
+ add_next_index_string(return_value,
globbuf.gl_pathv[n]+cwd_skip, 1);
+ }
+ } else {
+ add_next_index_string(return_value,
globbuf.gl_pathv[n]+cwd_skip, 1);
+ }
}
globfree(&globbuf);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php