Use os.path.samestat() instead of reinventing the wheel.

parent 243994dc
...@@ -126,13 +126,6 @@ def _get_masked_mode(mode): ...@@ -126,13 +126,6 @@ def _get_masked_mode(mode):
umask(mask) umask(mask)
return mode & ~mask return mode & ~mask
def _are_same_file(stat1, stat2):
"""Helper function that checks whether two stat results refer to the same
file.
"""
return (stat1.st_ino == stat2.st_ino and stat1.st_dev == stat2.st_dev)
#
# Super directory utilities. # Super directory utilities.
# (Inspired by Eric Raymond; the doc strings are mostly his) # (Inspired by Eric Raymond; the doc strings are mostly his)
...@@ -345,7 +338,7 @@ if _exists("openat"): ...@@ -345,7 +338,7 @@ if _exists("openat"):
topfd = open(top, O_RDONLY) topfd = open(top, O_RDONLY)
try: try:
if (followlinks or (st.S_ISDIR(orig_st.st_mode) and if (followlinks or (st.S_ISDIR(orig_st.st_mode) and
_are_same_file(orig_st, fstat(topfd)))): path.samestat(orig_st, fstat(topfd)))):
for x in _fwalk(topfd, top, topdown, onerror, followlinks): for x in _fwalk(topfd, top, topdown, onerror, followlinks):
yield x yield x
finally: finally:
...@@ -382,7 +375,7 @@ if _exists("openat"): ...@@ -382,7 +375,7 @@ if _exists("openat"):
onerror(err) onerror(err)
return return
try: try:
if followlinks or _are_same_file(orig_st, fstat(dirfd)): if followlinks or path.samestat(orig_st, fstat(dirfd)):
dirpath = path.join(toppath, name) dirpath = path.join(toppath, name)
for x in _fwalk(dirfd, dirpath, topdown, onerror, followlinks): for x in _fwalk(dirfd, dirpath, topdown, onerror, followlinks):
yield x yield x
......
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