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:
parent
c6d2a20bc6
commit
992d58b770
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue