Kaydet (Commit) 992d58b7 authored tarafından Jack Jansen's avatar Jack Jansen

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.
üst c6d2a20b
...@@ -122,10 +122,13 @@ def getatime(filename): ...@@ -122,10 +122,13 @@ def getatime(filename):
def islink(s): def islink(s):
"""Return true if the pathname refers to a symbolic link. """Return true if the pathname refers to a symbolic link."""
Always false on the Mac, until we understand Aliases.)"""
return False try:
import macfs
return macfs.ResolveAliasFile(s)[2]
except:
return False
def isfile(s): def isfile(s):
...@@ -223,7 +226,7 @@ def walk(top, func, arg): ...@@ -223,7 +226,7 @@ def walk(top, func, arg):
func(arg, top, names) func(arg, top, names)
for name in names: for name in names:
name = join(top, name) name = join(top, name)
if isdir(name): if isdir(name) and not islink(name):
walk(name, func, arg) walk(name, func, arg)
...@@ -234,4 +237,17 @@ def abspath(path): ...@@ -234,4 +237,17 @@ def abspath(path):
return normpath(path) return normpath(path)
# realpath is a no-op on systems without islink support # 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment