Merged revisions 68893 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r68893 | martin.v.loewis | 2009-01-24 16:47:27 +0100 (Sa, 24 Jan 2009) | 3 lines Issue #3881: Help Tcl to load even when started through the unreadable local symlink to "Program Files" on Vista. ........
This commit is contained in:
parent
76eb789ce0
commit
e8b471c23d
|
@ -10,6 +10,40 @@ import sys, os
|
|||
# <TCL_LIBRARY>\..\tcl<TCL_VERSION>, so anything close to
|
||||
# the real Tcl library will do.
|
||||
|
||||
# Expand symbolic links on Vista
|
||||
try:
|
||||
import ctypes
|
||||
ctypes.windll.kernel32.GetFinalPathNameByHandleW
|
||||
except (ImportError, AttributeError):
|
||||
def convert_path(s):
|
||||
return s
|
||||
else:
|
||||
def convert_path(s):
|
||||
if isinstance(s, str):
|
||||
s = s.decode("mbcs")
|
||||
hdir = ctypes.windll.kernel32.\
|
||||
CreateFileW(s, 0x80, # FILE_READ_ATTRIBUTES
|
||||
1, # FILE_SHARE_READ
|
||||
None, 3, # OPEN_EXISTING
|
||||
0x02000000, # FILE_FLAG_BACKUP_SEMANTICS
|
||||
None)
|
||||
if hdir == -1:
|
||||
# Cannot open directory, give up
|
||||
return s
|
||||
buf = ctypes.create_unicode_buffer(u"", 32768)
|
||||
res = ctypes.windll.kernel32.\
|
||||
GetFinalPathNameByHandleW(hdir, buf, len(buf),
|
||||
0) # VOLUME_NAME_DOS
|
||||
ctypes.windll.kernel32.CloseHandle(hdir)
|
||||
if res == 0:
|
||||
# Conversion failed (e.g. network location)
|
||||
return s
|
||||
s = buf[:res]
|
||||
# Ignore leading \\?\
|
||||
if s.startswith(u"\\\\?\\"):
|
||||
s = s[4:]
|
||||
return s
|
||||
|
||||
prefix = os.path.join(sys.prefix,"tcl")
|
||||
if not os.path.exists(prefix):
|
||||
# devdir/../tcltk/lib
|
||||
|
@ -17,6 +51,7 @@ if not os.path.exists(prefix):
|
|||
prefix = os.path.abspath(prefix)
|
||||
# if this does not exist, no further search is needed
|
||||
if os.path.exists(prefix):
|
||||
prefix = convert_path(prefix)
|
||||
if not os.environ.has_key("TCL_LIBRARY"):
|
||||
for name in os.listdir(prefix):
|
||||
if name.startswith("tcl"):
|
||||
|
|
Loading…
Reference in New Issue