Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

inotify: remove watch when renaming a watched path #518

Merged
merged 1 commit into from Oct 14, 2022
Merged

Commits on Oct 13, 2022

  1. inotify: remove watch when renaming a watched path

    Renaming a watched path is problematic; on inotify we just get a
    IN_MOVED_SELF event with the old filename and that's it; no more events
    for you! So if you do:
    
    	watch one
    	mv    one two
    	cat   asd >two
    
    You still continue to get events for the file "one", even though it's
    now named "two" (the file descriptor doesn't care about the rename).
    There is no way we can know the new event as far as I can tell,
    inotifywait(1) also behaves like this. So instead of continuing in a
    semi-broken state just remove the watcher, like we do for deletes.
    
    On kqueue and FEN the situation is similar, and we actually already
    removed watchers on renames.
    
    On Windows this all works nicely; the watch is preserved and the
    filename is updated. I decided to keep this as-is for now, even though
    it's inconsistent. We actually fixed the Windows behaviour for the 1.6.0
    release in #370 , so people do seem to care about it and use it, and
    experience with the symlink change in 1.5.0 shows it's better to keep
    inconsistent behaviour rather than change it. Fixing this up is
    something for a v2.
    
    Fixes #172
    Fixes #503
    arp242 committed Oct 13, 2022
    Configuration menu
    Copy the full SHA
    5543647 View commit details
    Browse the repository at this point in the history