cvs: php-src /ext/standard dir.c
| From: | Sara Golemon | Date: | Mon, 02 Oct 2006 18:14:43 +0000 |
| Subject: | cvs: php-src /ext/standard dir.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-40834@lists.php.net to get a copy of this message | ||
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);