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

Reply via email to