stas            Tue Feb 12 01:03:43 2008 UTC

  Modified files:              
    /php-src/ext/standard       string.c 
  Log:
  MFB __DIR__ constant support
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.666&r2=1.667&diff_format=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.666 php-src/ext/standard/string.c:1.667
--- php-src/ext/standard/string.c:1.666 Tue Jan 29 01:44:38 2008
+++ php-src/ext/standard/string.c       Tue Feb 12 01:03:43 2008
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: string.c,v 1.666 2008/01/29 01:44:38 davidc Exp $ */
+/* $Id: string.c,v 1.667 2008/02/12 01:03:43 stas Exp $ */
 
 /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
 
@@ -2000,94 +2000,7 @@
    Returns directory name component of path */
 PHPAPI int php_u_dirname(UChar *path, int len)
 {
-       register UChar *end = path + len - 1;
-       unsigned int len_adjust = 0;
-
-#ifdef PHP_WIN32
-       /* Note that on Win32 CWD is per drive (heritage from CP/M).
-        * This means dirname("c:foo") maps to "c:." or "c:" - which means CWD 
on C: drive.
-        */
-       if ((2 <= len) && u_isalpha((UChar32)path[0]) && ((UChar)0x3a /*':'*/ 
== path[1])) {
-               /* Skip over the drive spec (if any) so as not to change */
-               path += 2;
-               len_adjust += 2;
-               if (2 == len) {
-                       /* Return "c:" on Win32 for dirname("c:").
-                        * It would be more consistent to return "c:."
-                        * but that would require making the string *longer*.
-                        */
-                       return len;
-               }
-       }
-#elif defined(NETWARE)
-       /*
-        * Find the first occurence of : from the left
-        * move the path pointer to the position just after :
-        * increment the len_adjust to the length of path till colon 
character(inclusive)
-        * If there is no character beyond : simple return len
-        */
-       UChar *colonpos = NULL;
-       colonpos = u_strchr(path, (UChar) 0x3a /*':'*/);
-       if(colonpos != NULL) {
-               len_adjust = ((colonpos - path) + 1);
-               path += len_adjust;
-               if(len_adjust == len) {
-               return len;
-               }
-       }
-#endif
-
-       if (len == 0) {
-               /* Illegal use of this function */
-               return 0;
-       }
-
-       /* Strip trailing slashes */
-       while (end >= path && IS_U_SLASH_P(end)) {
-               end--;
-       }
-       if (end < path) {
-               /* The path only contained slashes */
-               path[0] = DEFAULT_U_SLASH;
-               path[1] = 0;
-               return 1 + len_adjust;
-       }
-
-       /* Strip filename */
-       while (end >= path && !IS_U_SLASH_P(end)) {
-               end--;
-       }
-       if (end < path) {
-               /* No slash found, therefore return '.' */
-#ifdef NETWARE
-               if(len_adjust == 0) {
-                       path[0] = (UChar) 0x2e /*'.'*/;
-                       path[1] = 0;
-                       return 1; //only one character
-               }
-               else {
-                       path[0] = 0;
-                       return len_adjust;
-               }
-#else
-               path[0] = (UChar) 0x2e /*'.'*/;
-               path[1] = 0;
-               return 1 + len_adjust;
-#endif
-       }
-
-       /* Strip slashes which came before the file name */
-       while (end >= path && IS_U_SLASH_P(end)) {
-               end--;
-       }
-       if (end < path) {
-               path[0] = DEFAULT_U_SLASH;
-               path[1] = 0;
-               return 1 + len_adjust;
-       }
-       *(end+1) = 0;
-
-       return (size_t)(end + 1 - path) + len_adjust;
+       return zend_u_dirname(path, len);
 }
 /* }}} */
 
@@ -2095,94 +2008,7 @@
    Returns directory name component of path */
 PHPAPI int php_dirname(char *path, int len)
 {
-       register char *end = path + len - 1;
-       unsigned int len_adjust = 0;
-
-#ifdef PHP_WIN32
-       /* Note that on Win32 CWD is per drive (heritage from CP/M).
-        * This means dirname("c:foo") maps to "c:." or "c:" - which means CWD 
on C: drive.
-        */
-       if ((2 <= len) && isalpha((int)((unsigned char *)path)[0]) && (':' == 
path[1])) {
-               /* Skip over the drive spec (if any) so as not to change */
-               path += 2;
-               len_adjust += 2;
-               if (2 == len) {
-                       /* Return "c:" on Win32 for dirname("c:").
-                        * It would be more consistent to return "c:."
-                        * but that would require making the string *longer*.
-                        */
-                       return len;
-               }
-       }
-#elif defined(NETWARE)
-       /*
-        * Find the first occurence of : from the left
-        * move the path pointer to the position just after :
-        * increment the len_adjust to the length of path till colon 
character(inclusive)
-        * If there is no character beyond : simple return len
-        */
-       char *colonpos = NULL;
-       colonpos = strchr(path, ':');
-       if(colonpos != NULL) {
-               len_adjust = ((colonpos - path) + 1);
-               path += len_adjust;
-               if(len_adjust == len) {
-               return len;
-               }
-       }
-#endif
-
-       if (len == 0) {
-               /* Illegal use of this function */
-               return 0;
-       }
-
-       /* Strip trailing slashes */
-       while (end >= path && IS_SLASH_P(end)) {
-               end--;
-       }
-       if (end < path) {
-               /* The path only contained slashes */
-               path[0] = DEFAULT_SLASH;
-               path[1] = '\0';
-               return 1 + len_adjust;
-       }
-
-       /* Strip filename */
-       while (end >= path && !IS_SLASH_P(end)) {
-               end--;
-       }
-       if (end < path) {
-               /* No slash found, therefore return '.' */
-#ifdef NETWARE
-               if(len_adjust == 0) {
-                       path[0] = '.';
-                       path[1] = '\0';
-                       return 1; //only one character
-               }
-               else {
-                       path[0] = '\0';
-                       return len_adjust;
-               }
-#else
-               path[0] = '.';
-               path[1] = '\0';
-               return 1 + len_adjust;
-#endif
-       }
-
-       /* Strip slashes which came before the file name */
-       while (end >= path && IS_SLASH_P(end)) {
-               end--;
-       }
-       if (end < path) {
-               path[0] = DEFAULT_SLASH;
-               path[1] = '\0';
-               return 1 + len_adjust;
-       }
-       *(end+1) = '\0';
-
-       return (size_t)(end + 1 - path) + len_adjust;
+       return zend_dirname(path, len);
 }
 /* }}} */
 

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

Reply via email to