]> source.dussan.org Git - nextcloud-server.git/commitdiff
Make it possible to cleanPath() absolute Windows paths
authorJoas Schilling <nickvergessen@gmx.de>
Fri, 7 Nov 2014 09:52:37 +0000 (10:52 +0100)
committerJoas Schilling <nickvergessen@gmx.de>
Wed, 19 Nov 2014 09:06:10 +0000 (10:06 +0100)
lib/private/files/filesystem.php

index f5be7a0cc05968a952c7b4cdd19000b6e9a0c5e9..1ebc79086ddb26474a4e867711e64771672e4753 100644 (file)
@@ -695,13 +695,22 @@ class Filesystem {
         * @param bool $stripTrailingSlash
         * @return string
         */
-       public static function normalizePath($path, $stripTrailingSlash = true) {
+       public static function normalizePath($path, $stripTrailingSlash = true, $isAbsolutePath = false) {
                if ($path == '') {
                        return '/';
                }
+
                //no windows style slashes
                $path = str_replace('\\', '/', $path);
 
+               // When normalizing an absolute path, we need to ensure that the drive-letter
+               // is still at the beginning on windows
+               $windows_drive_letter = '';
+               if ($isAbsolutePath && \OC_Util::runningOnWindows() && preg_match('#^([a-zA-Z])$#', $path[0]) && $path[1] == ':' && $path[2] == '/') {
+                       $windows_drive_letter = substr($path, 0, 2);
+                       $path = substr($path, 2);
+               }
+
                //add leading slash
                if ($path[0] !== '/') {
                        $path = '/' . $path;
@@ -730,7 +739,7 @@ class Filesystem {
                //normalize unicode if possible
                $path = \OC_Util::normalizeUnicode($path);
 
-               return $path;
+               return $windows_drive_letter . $path;
        }
 
        /**