]> granicus.if.org Git - python/commitdiff
Fixed 'change_root() to work at all on Windows, and to work correctly on Unix.
authorGreg Ward <gward@python.net>
Wed, 31 May 2000 02:14:32 +0000 (02:14 +0000)
committerGreg Ward <gward@python.net>
Wed, 31 May 2000 02:14:32 +0000 (02:14 +0000)
Lib/distutils/util.py

index b660b4bf2bb5bf09c8972d0b416a1a7b31910504..6063aa6847f07a94f848b783455908020e402575 100644 (file)
@@ -86,22 +86,22 @@ def native_path (pathname):
 
 
 def change_root (new_root, pathname):
-
     """Return 'pathname' with 'new_root' prepended.  If 'pathname' is
     relative, this is equivalent to "os.path.join(new_root,pathname)".
     Otherwise, it requires making 'pathname' relative and then joining the
-    two, which is tricky on DOS/Windows and Mac OS."""
-
-    if not abspath (pathname):
-        return os.path.join (new_root, pathname)
-
-    elif os.name == 'posix':
-        return os.path.join (new_root, pathname[1:])
+    two, which is tricky on DOS/Windows and Mac OS.
+    """
+    if os.name == 'posix':
+        if not os.path.isabs (pathname):
+            return os.path.join (new_root, pathname)
+        else:
+            return os.path.join (new_root, pathname[1:])
 
     elif os.name == 'nt':
-        (root_drive, root_path) = os.path.splitdrive (new_root)
         (drive, path) = os.path.splitdrive (pathname)
-        raise RuntimeError, "I give up -- not sure how to do this on Windows"
+        if path[0] == '\\':
+            path = path[1:]
+        return os.path.join (new_root, path)
 
     elif os.name == 'mac':
         raise RuntimeError, "no clue how to do this on Mac OS"