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.
This commit is contained in:
Jack Jansen 2002-04-22 13:55:43 +00:00
parent c6d2a20bc6
commit 992d58b770
1 changed files with 21 additions and 5 deletions

View File

@ -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