mercurial/win32.py
changeset 35550 ed30934165c9
parent 35549 94a127152e25
child 38533 3a0f322af192
equal deleted inserted replaced
35549:94a127152e25 35550:ed30934165c9
   437     Returns None if we are unsure. Raises OSError on ENOENT, EPERM, etc.
   437     Returns None if we are unsure. Raises OSError on ENOENT, EPERM, etc.
   438     """
   438     """
   439     # realpath() calls GetFullPathName()
   439     # realpath() calls GetFullPathName()
   440     realpath = os.path.realpath(path)
   440     realpath = os.path.realpath(path)
   441 
   441 
   442     size = len(realpath) + 1
   442     # allocate at least MAX_PATH long since GetVolumePathName('c:\\', buf, 4)
       
   443     # somehow fails on Windows XP
       
   444     size = max(len(realpath), _MAX_PATH) + 1
   443     buf = ctypes.create_string_buffer(size)
   445     buf = ctypes.create_string_buffer(size)
   444 
   446 
   445     if not _kernel32.GetVolumePathNameA(realpath, ctypes.byref(buf), size):
   447     if not _kernel32.GetVolumePathNameA(realpath, ctypes.byref(buf), size):
   446         raise ctypes.WinError() # Note: WinError is a function
   448         raise ctypes.WinError() # Note: WinError is a function
   447 
   449