Tolerate some other file access problems

This commit is contained in:
Peter J. Holzer 2024-05-25 00:09:33 +02:00
parent 29491e1639
commit 5d42d92598
1 changed files with 14 additions and 8 deletions

22
kitsune
View File

@ -54,12 +54,18 @@ def watch(args):
if st.st_mtime_ns > last_ts: if st.st_mtime_ns > last_ts:
last_ts = st.st_mtime_ns last_ts = st.st_mtime_ns
for de in os.scandir(d): for de in os.scandir(d):
if de.is_file(): try:
if args.match_filename is None or fnmatch.fnmatch(de.name, args.match_filename): if de.is_file():
if de.path not in watched_files: if args.match_filename is None or fnmatch.fnmatch(de.name, args.match_filename):
watched_files[de.path] = WatchedFile(de.path, seek_to_end) if de.path not in watched_files:
if len(de.path) > filename_length: watched_files[de.path] = WatchedFile(de.path, seek_to_end)
filename_length = len(de.path) if len(de.path) > filename_length:
filename_length = len(de.path)
except (PermissionError, OSError):
# ignore,
# or maybe remove from watched_files?
# or just mark as unavailable?
pass
# has any of the files changed # has any of the files changed
for f in watched_files.values(): for f in watched_files.values():
@ -71,7 +77,7 @@ def watch(args):
if stf.st_ino != st.st_ino: if stf.st_ino != st.st_ino:
f.reopen() f.reopen()
st = os.stat(f.fileno) st = os.stat(f.fileno)
except FileNotFoundError: except (FileNotFoundError, PermissionError):
# ignore, # ignore,
# or maybe remove from watched_files? # or maybe remove from watched_files?
# or just mark as deleted? # or just mark as deleted?
@ -94,7 +100,7 @@ def watch(args):
stf = os.stat(f.path) stf = os.stat(f.path)
if stf.st_ctime_ns != f.st_ctime_ns: if stf.st_ctime_ns != f.st_ctime_ns:
f.reopen() f.reopen()
except FileNotFoundError: except (FileNotFoundError, PermissionError):
# ignore, # ignore,
# or maybe remove from watched_files? # or maybe remove from watched_files?
# or just mark as deleted? # or just mark as deleted?