hholzgra                Sun Jun 12 03:53:25 2005 EDT

  Modified files:              
    /php-src/ext/standard       dir.c 
  Log:
  Support for GLOB_ERR so that glob() reports permission problems (Bug #28355)
  
  
http://cvs.php.net/diff.php/php-src/ext/standard/dir.c?r1=1.145&r2=1.146&ty=u
Index: php-src/ext/standard/dir.c
diff -u php-src/ext/standard/dir.c:1.145 php-src/ext/standard/dir.c:1.146
--- php-src/ext/standard/dir.c:1.145    Sat Jun 11 21:13:24 2005
+++ php-src/ext/standard/dir.c  Sun Jun 12 03:53:24 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: dir.c,v 1.145 2005/06/12 01:13:24 hholzgra Exp $ */
+/* $Id: dir.c,v 1.146 2005/06/12 07:53:24 hholzgra Exp $ */
 
 /* {{{ includes/startup/misc */
 
@@ -155,6 +155,9 @@
 #ifdef GLOB_NOESCAPE
        REGISTER_LONG_CONSTANT("GLOB_NOESCAPE", GLOB_NOESCAPE, CONST_CS | 
CONST_PERSISTENT);
 #endif
+#ifdef GLOB_ERR
+       REGISTER_LONG_CONSTANT("GLOB_ERR", GLOB_ERR, CONST_CS | 
CONST_PERSISTENT);
+#endif
 
 #ifndef GLOB_ONLYDIR
 #define GLOB_ONLYDIR (1<<30)
@@ -395,10 +398,14 @@
        if (0 != (ret = glob(pattern, flags & GLOB_FLAGMASK, NULL, &globbuf))) {
 #ifdef GLOB_NOMATCH
                if (GLOB_NOMATCH == ret) {
-                       /* Linux handles no matches as an error condition, but 
FreeBSD
-                        * doesn't. This ensure that if no match is found, an 
empty array
-                        * is always returned so it can be used without 
worrying in e.g.
-                        * foreach() */
+                       /* Some glob implementation simply return no data if no 
matches
+                          were found, others return the GLOB_NOMATCH error 
code.
+                          We don't want to treat GLOB_NOMATCH as an error 
condition
+                          so that PHP glob() behaves the same on both types of 
+                          implementations and so that 'foreach (glob() as ...'
+                          can be used for simple glob() calls without further 
error
+                          checking.
+                       */
                        array_init(return_value);
                        return;
                }
@@ -424,7 +431,7 @@
 
        array_init(return_value);
        for (n = 0; n < globbuf.gl_pathc; n++) {
-               /* we need to this everytime since GLOB_ONLYDIR does not 
guarantee that
+               /* we need to do this everytime since GLOB_ONLYDIR does not 
guarantee that
                 * all directories will be filtered. GNU libc documentation 
states the
                 * following: 
                 * If the information about the type of the file is easily 
available 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to