From 992d58b770daa61b209fdc3545b5e962acfc735a Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Mon, 22 Apr 2002 13:55:43 +0000 Subject: Fixes based on ideas from Christopher Smith: - islink() now returns true for alias files - walk() no longer follows aliases while traversing - realpath() implemented, returning an alias-free pathname. As this could conceivably break existing code I think it isn't a bugfix candidate. --- Lib/macpath.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Lib/macpath.py b/Lib/macpath.py index 91412c5..24f4a14 100644 --- a/Lib/macpath.py +++ b/Lib/macpath.py @@ -122,10 +122,13 @@ def getatime(filename): def islink(s): - """Return true if the pathname refers to a symbolic link. - Always false on the Mac, until we understand Aliases.)""" + """Return true if the pathname refers to a symbolic link.""" - return False + try: + import macfs + return macfs.ResolveAliasFile(s)[2] + except: + return False def isfile(s): @@ -223,7 +226,7 @@ def walk(top, func, arg): func(arg, top, names) for name in names: name = join(top, name) - if isdir(name): + if isdir(name) and not islink(name): walk(name, func, arg) @@ -234,4 +237,17 @@ def abspath(path): return normpath(path) # realpath is a no-op on systems without islink support -realpath = abspath +def realpath(path): + path = abspath(path) + try: + import macfs + except ImportError: + return path + if not path: + return path + components = path.split(':') + path = components[0] + ':' + for c in components[1:]: + path = join(path, c) + path = macfs.ResolveAliasFile(path)[0].as_pathname() + return path -- cgit v0.12