Merged revisions 83429,83436 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/release27-maint

................
  r83429 | georg.brandl | 2010-08-01 21:14:56 +0200 (So, 01 Aug 2010) | 37 lines

  Merged revisions 83352,83356-83358,83362,83366,83368-83369 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/branches/py3k

  ........
    r83352 | georg.brandl | 2010-07-31 20:11:07 +0200 (Sa, 31 Jul 2010) | 1 line

    #9440: Remove borderline test case that fails based on unpredictable conditions such as compiler flags.
  ........
    r83356 | georg.brandl | 2010-07-31 21:29:15 +0200 (Sa, 31 Jul 2010) | 1 line

    Remove trailing whitespace.
  ........
    r83357 | georg.brandl | 2010-07-31 21:59:55 +0200 (Sa, 31 Jul 2010) | 1 line

    #5778: document that sys.version can contain a newline.
  ........
    r83358 | georg.brandl | 2010-07-31 22:05:31 +0200 (Sa, 31 Jul 2010) | 1 line

    #9442: do not document a specific format for sys.version; rather refer to version_info and the platform module.
  ........
    r83362 | georg.brandl | 2010-07-31 23:12:15 +0200 (Sa, 31 Jul 2010) | 1 line

    #8910: add a file explaining why Lib/test/data is there.
  ........
    r83366 | georg.brandl | 2010-07-31 23:26:40 +0200 (Sa, 31 Jul 2010) | 1 line

    There always is a False and True now.
  ........
    r83368 | georg.brandl | 2010-07-31 23:40:15 +0200 (Sa, 31 Jul 2010) | 1 line

    #7909: the prefixes \\.\ and \\?\ indicate special Windows paths, do not try to manipulate them.  See http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx for details.
  ........
    r83369 | georg.brandl | 2010-07-31 23:41:42 +0200 (Sa, 31 Jul 2010) | 1 line

    Fix "Berkeley" name.
  ........
................
  r83436 | georg.brandl | 2010-08-01 21:33:15 +0200 (So, 01 Aug 2010) | 42 lines

  Merged revisions 83259,83261,83264-83265,83268-83269,83271-83272,83281 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/branches/py3k

  ........
    r83259 | georg.brandl | 2010-07-30 09:03:39 +0200 (Fr, 30 Jul 2010) | 1 line

    Clarification.
  ........
    r83261 | georg.brandl | 2010-07-30 09:21:26 +0200 (Fr, 30 Jul 2010) | 1 line

    #9230: allow Pdb.checkline() to be called without a current frame, for setting breakpoints before starting debugging.
  ........
    r83264 | georg.brandl | 2010-07-30 10:45:26 +0200 (Fr, 30 Jul 2010) | 1 line

    Document the "jump" command in pdb.__doc__, and add a version tag for "until X".
  ........
    r83265 | georg.brandl | 2010-07-30 10:54:49 +0200 (Fr, 30 Jul 2010) | 1 line

    #8015: fix crash when entering an empty line for breakpoint commands.  Also restore environment properly when an exception occurs during the definition of commands.
  ........
    r83268 | georg.brandl | 2010-07-30 11:23:23 +0200 (Fr, 30 Jul 2010) | 2 lines

    Issue #8048: Prevent doctests from failing when sys.displayhook has
    been reassigned.
  ........
    r83269 | georg.brandl | 2010-07-30 11:43:00 +0200 (Fr, 30 Jul 2010) | 1 line

    #6719: In pdb, do not stop somewhere in the encodings machinery if the source file to be debugged is in a non-builtin encoding.
  ........
    r83271 | georg.brandl | 2010-07-30 11:59:28 +0200 (Fr, 30 Jul 2010) | 1 line

    #5727: Restore the ability to use readline when calling into pdb in doctests.
  ........
    r83272 | georg.brandl | 2010-07-30 12:29:19 +0200 (Fr, 30 Jul 2010) | 1 line

    #5294: Fix the behavior of pdb "continue" command when called in the top-level debugged frame.
  ........
    r83281 | georg.brandl | 2010-07-30 15:36:43 +0200 (Fr, 30 Jul 2010) | 1 line

    Add myself for pdb.
  ........
................
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index a124dfd..11a0a3e 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -399,6 +399,12 @@
     """Normalize path, eliminating double slashes, etc."""
     # Preserve unicode (if path is unicode)
     backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.')
+    if path.startswith(('\\\\.\\', '\\\\?\\')):
+        # in the case of paths with these prefixes:
+        # \\.\ -> device names
+        # \\?\ -> literal paths
+        # do not do any normalization, but return the path unchanged
+        return path
     path = path.replace("/", "\\")
     prefix, path = splitdrive(path)
     # We need to be careful here. If the prefix is empty, and the path starts