helly           Sun Jul 16 10:34:32 2006 UTC

  Modified files:              
    /php-src/ext/standard       string.c 
    /php-src/ext/standard/tests/strings bug24098.phpt 
  Log:
  - Pathinfo allows to get filename (Toby S, Christian S)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.551&r2=1.552&diff_format=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.551 php-src/ext/standard/string.c:1.552
--- php-src/ext/standard/string.c:1.551 Thu Jul 13 22:26:50 2006
+++ php-src/ext/standard/string.c       Sun Jul 16 10:34:31 2006
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: string.c,v 1.551 2006/07/13 22:26:50 andrei Exp $ */
+/* $Id: string.c,v 1.552 2006/07/16 10:34:31 helly Exp $ */
 
 /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
 
@@ -62,7 +62,8 @@
 #define PHP_PATHINFO_DIRNAME   1
 #define PHP_PATHINFO_BASENAME  2
 #define PHP_PATHINFO_EXTENSION         4
-#define PHP_PATHINFO_ALL       (PHP_PATHINFO_DIRNAME | PHP_PATHINFO_BASENAME | 
PHP_PATHINFO_EXTENSION)
+#define PHP_PATHINFO_FILENAME  8
+#define PHP_PATHINFO_ALL       (PHP_PATHINFO_DIRNAME | PHP_PATHINFO_BASENAME | 
PHP_PATHINFO_EXTENSION | PHP_PATHINFO_FILENAME)
 
 #define STR_STRSPN                             0
 #define STR_STRCSPN                            1
@@ -1948,6 +1949,26 @@
                        efree(ret);
                }
        }
+       
+       if ((opt & PHP_PATHINFO_FILENAME) == PHP_PATHINFO_FILENAME) {
+               char *p;
+               int idx;
+               int have_basename = ((opt & PHP_PATHINFO_BASENAME) == 
PHP_PATHINFO_BASENAME);
+
+               /* Have we alrady looked up the basename? */
+               if (!have_basename) {
+                       php_basename(path, path_len, NULL, 0, &ret, &ret_len 
TSRMLS_CC);
+               }
+
+               p = strrchr(ret, '.');
+
+               idx = p ? (p - ret) : ret_len;
+               add_assoc_stringl(tmp, "filename", ret, idx, 1);
+
+               if (!have_basename) {
+                       efree(ret);
+               }
+       }
 
        if (opt == PHP_PATHINFO_ALL) {
                RETURN_ZVAL(tmp, 0, 1);
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/strings/bug24098.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/standard/tests/strings/bug24098.phpt
diff -u php-src/ext/standard/tests/strings/bug24098.phpt:1.3 
php-src/ext/standard/tests/strings/bug24098.phpt:1.4
--- php-src/ext/standard/tests/strings/bug24098.phpt:1.3        Tue Aug 23 
12:53:30 2005
+++ php-src/ext/standard/tests/strings/bug24098.phpt    Sun Jul 16 10:34:32 2006
@@ -14,6 +14,8 @@
   string(8) "dsds.asa"
   ["extension"]=>
   string(3) "asa"
+  ["filename"]=>
+  string(4) "dsds"
 }
 --UEXPECT--
 array(3) {
@@ -23,4 +25,6 @@
   unicode(8) "dsds.asa"
   [u"extension"]=>
   unicode(3) "asa"
+  [u"filename"]=>
+  string(4) "dsds"
 }

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

Reply via email to