felipe                                   Sun, 12 Jun 2011 15:15:44 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=312104

Log:
- Restore basename in filename on non Windows OS

Changed paths:
    U   php/php-src/branches/PHP_5_4/ext/mbstring/mbstring.c
    U   php/php-src/branches/PHP_5_4/main/rfc1867.c
    U   php/php-src/trunk/ext/mbstring/mbstring.c
    U   php/php-src/trunk/main/rfc1867.c

Modified: php/php-src/branches/PHP_5_4/ext/mbstring/mbstring.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/mbstring/mbstring.c        2011-06-12 
15:14:18 UTC (rev 312103)
+++ php/php-src/branches/PHP_5_4/ext/mbstring/mbstring.c        2011-06-12 
15:15:44 UTC (rev 312104)
@@ -1146,7 +1146,7 @@

 static char *php_mb_rfc1867_basename(const zend_encoding *encoding, char 
*filename TSRMLS_DC) /* {{{ */
 {
-       char *s, *tmp;
+       char *s, *s2, *tmp;
        const size_t filename_len = strlen(filename);

        /* The \ check should technically be needed for win32 systems only where
@@ -1155,11 +1155,18 @@
         * the user does basename() they get a bogus file name. Until IE's user 
base drops
         * to nill or problem is fixed this code must remain enabled for all 
systems. */
        s = php_mb_safe_strrchr_ex(filename, '\\', filename_len, (const 
mbfl_encoding *)encoding);
-       if ((tmp = php_mb_safe_strrchr_ex(filename, '/', filename_len, (const 
mbfl_encoding *)encoding)) > s) {
-               s = tmp;
-       }
-       if (s) {
-               return s + 1;
+       s2 = php_mb_safe_strrchr_ex(filename, '/', filename_len, (const 
mbfl_encoding *)encoding);
+
+       if (s && s2) {
+               if (s > s2) {
+                       return ++s;
+               } else {
+                       return ++s2;
+               }
+       } else if (s) {
+               return ++s;
+       } else if (s2) {
+               return ++s2;
        } else {
                return filename;
        }

Modified: php/php-src/branches/PHP_5_4/main/rfc1867.c
===================================================================
--- php/php-src/branches/PHP_5_4/main/rfc1867.c 2011-06-12 15:14:18 UTC (rev 
312103)
+++ php/php-src/branches/PHP_5_4/main/rfc1867.c 2011-06-12 15:15:44 UTC (rev 
312104)
@@ -555,17 +555,21 @@
 static char *php_ap_basename(const zend_encoding *encoding, char *path 
TSRMLS_DC)
 {
        char *s = strrchr(path, '\\');
-       if (s) {
-               char *tmp = strrchr(path, '/');
-               if (tmp && tmp > s) {
-                       s = tmp + 1;
+       char *s2 = strrchr(path, '/');
+
+       if (s && s2) {
+               if (s > s2) {
+                       ++s;
                } else {
-                       s++;
+                       s = ++s2;
                }
-       } else {
-               s = path;
+               return s;
+       } else if (s) {
+               return ++s;
+       } else if (s2) {
+               return ++s2;
        }
-       return s;
+       return path;
 }

 /*

Modified: php/php-src/trunk/ext/mbstring/mbstring.c
===================================================================
--- php/php-src/trunk/ext/mbstring/mbstring.c   2011-06-12 15:14:18 UTC (rev 
312103)
+++ php/php-src/trunk/ext/mbstring/mbstring.c   2011-06-12 15:15:44 UTC (rev 
312104)
@@ -1146,7 +1146,7 @@

 static char *php_mb_rfc1867_basename(const zend_encoding *encoding, char 
*filename TSRMLS_DC) /* {{{ */
 {
-       char *s, *tmp;
+       char *s, *s2, *tmp;
        const size_t filename_len = strlen(filename);

        /* The \ check should technically be needed for win32 systems only where
@@ -1155,11 +1155,18 @@
         * the user does basename() they get a bogus file name. Until IE's user 
base drops
         * to nill or problem is fixed this code must remain enabled for all 
systems. */
        s = php_mb_safe_strrchr_ex(filename, '\\', filename_len, (const 
mbfl_encoding *)encoding);
-       if ((tmp = php_mb_safe_strrchr_ex(filename, '/', filename_len, (const 
mbfl_encoding *)encoding)) > s) {
-               s = tmp;
-       }
-       if (s) {
-               return s + 1;
+       s2 = php_mb_safe_strrchr_ex(filename, '/', filename_len, (const 
mbfl_encoding *)encoding);
+
+       if (s && s2) {
+               if (s > s2) {
+                       return ++s;
+               } else {
+                       return ++s2;
+               }
+       } else if (s) {
+               return ++s;
+       } else if (s2) {
+               return ++s2;
        } else {
                return filename;
        }

Modified: php/php-src/trunk/main/rfc1867.c
===================================================================
--- php/php-src/trunk/main/rfc1867.c    2011-06-12 15:14:18 UTC (rev 312103)
+++ php/php-src/trunk/main/rfc1867.c    2011-06-12 15:15:44 UTC (rev 312104)
@@ -555,17 +555,21 @@
 static char *php_ap_basename(const zend_encoding *encoding, char *path 
TSRMLS_DC)
 {
        char *s = strrchr(path, '\\');
-       if (s) {
-               char *tmp = strrchr(path, '/');
-               if (tmp && tmp > s) {
-                       s = tmp + 1;
+       char *s2 = strrchr(path, '/');
+
+       if (s && s2) {
+               if (s > s2) {
+                       ++s;
                } else {
-                       s++;
+                       s = ++s2;
                }
-       } else {
-               s = path;
+               return s;
+       } else if (s) {
+               return ++s;
+       } else if (s2) {
+               return ++s2;
        }
-       return s;
+       return path;
 }

 /*

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

Reply via email to