mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-27 18:28:42 +00:00
Merge pull request #3558 from leo-b/1.1-maint-scandir
ignore exceptions in scandir_inorder() caused by an implicit stat()
This commit is contained in:
commit
37a475e3ac
1 changed files with 14 additions and 1 deletions
|
@ -2101,8 +2101,21 @@ def scandir_generic(path='.'):
|
|||
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):
|
||||
|
|
Loading…
Reference in a new issue