From: Pierre Joye Date: Tue, 25 Aug 2009 23:51:04 +0000 (+0000) Subject: Improved readlink, supress \??\ and use the drive syntax only X-Git-Tag: php-5.4.0alpha1~191^2~2755 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=acbdbf2d499286bae6630147f0ca2db339bcc92a;p=php Improved readlink, supress \??\ and use the drive syntax only --- diff --git a/ext/standard/link_win32.c b/ext/standard/link_win32.c index 6fa65caaa4..bd37aab306 100644 --- a/ext/standard/link_win32.c +++ b/ext/standard/link_win32.c @@ -106,7 +106,7 @@ PHP_FUNCTION(readlink) RETURN_FALSE; } - dwRet = pGetFinalPathNameByHandle(hFile, Path, MAXPATHLEN, VOLUME_NAME_NT); + dwRet = pGetFinalPathNameByHandle(hFile, Path, MAXPATHLEN, VOLUME_NAME_DOS); if(dwRet >= MAXPATHLEN) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't resolve the full path, the path exceeds the MAX_PATH_LEN (%d) limit", MAXPATHLEN); RETURN_FALSE; @@ -117,7 +117,14 @@ PHP_FUNCTION(readlink) /* Append NULL to the end of the string */ Path[dwRet] = '\0'; - RETURN_STRING(Path, 1); + if(dwRet > 4) { + /* Skip first 4 characters if they are "\??\" */ + if(Path[0] == '\\' && Path[0] == '\\' && Path[1] == '?' && Path[2] == '?' && Path[3] == '\\') { + RETURN_STRING(Path + 4, 1); + } + } else { + RETURN_STRING(Path, 1); + } } /* }}} */