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