ignore exceptions in scandir_inorder() caused by an implicit stat()

This commit is contained in:
Alexander 'Leo' Bergolth 2018-01-18 13:49:50 +01:00
parent d3a5484e2c
commit 9163e064fd
1 changed files with 14 additions and 1 deletions

View File

@ -2101,8 +2101,21 @@ except ImportError:
scandir = scandir_generic
def scandir_keyfunc(dirent):
try:
return (0, dirent.inode())
except OSError as e:
# maybe a permission denied error while doing a stat() on the dirent
logger.debug('scandir_inorder: Unable to stat %s: %s', dirent.path, e)
# order this dirent after all the others lexically by file name
# we may not break the whole scandir just because of an exception in one dirent
# ignore the exception for now, since another stat will be done later anyways
# (or the entry will be skipped by an exclude pattern)
return (1, dirent.name)
def scandir_inorder(path='.'):
return sorted(scandir(path), key=lambda dirent: dirent.inode())
return sorted(scandir(path), key=scandir_keyfunc)
def clean_lines(lines, lstrip=None, rstrip=None, remove_empty=True, remove_comments=True):