Subject: bug#21432: 25.0.50; file-notify-rm-watch (inotify) errors if watched dir is deleted

From: Eli Zaretskii <[email-masked]>
Date: Sat, 12 Sep 2015 18:11:37 +0300

> From: Michael Albinus <[email-masked]>
> Cc: Tassilo Horn <[email-masked]>,  [email-masked]
> Date: Sat, 12 Sep 2015 12:18:01 +0200
> 
> Michael Albinus <[email-masked]> writes:
> 
> > Eli Zaretskii <[email-masked]> writes:
> >
> >>> I don't have a strong opinion about what the right behavior would be but
> >>> at least it seems inconsistent that you get the error only with deleted
> >>> directories.
> >>
> >> There is no "right" behavior.  What you see is what the back-end
> >> reports to us.  If we want Emacs to be smarter, it's the job of the
> >> application, not of filenotify.el.
> >
> > Well, filenotify.el shall abstract from the different back-ends. Being
> > quiet when the native rm-watch fails seems to be appropriate.
> 
> I've checked, all three Emacs libraries inotify, gfilenotify and
> w32notify return an error when *-rm-watch detects a problem.
> `file-notify-rm-watch' could propagate this error. The manual
> shall be extended then.

But the issue comes up before you remove the watch.  You have a watch
that is in fact inoperable, but the application might not know about
that, or get hit by a signal out of nowhere.

So I think having a validation function is a good idea.

> At least inotify removes a watch internally, when it detects that the
> file/directoy to be watched does not exist any longer.

That's a bug, IMO: it shouldn't.

> gfilenotify and w32notify do not seem to to care.

In w32notify, I did that on purpose: it's not the business of the tail
to wag the dog.  Low-level functions has no business calling
higher-level APIs on their own.

> Shall we unify this behaviour? I'm not in favor of the inotify
> behaviour, the libraries shall raise a final signal instead that the
> watch is stopped. filenotify shall propagate this then, for example as
> `stopped' event or something like this.

I don't think you can easily raise a signal.  I think we should
provide a validate function for the applications to use.

> Last point, I've observed that inotify and gfilenotify raise a
> `file-notify-error' when needed. w32notify raises a `file-error'.
> Shouldn't it raise also `file-notify-error'?.

Yes, it should.  ('file-notify-error' didn't exist when I developed
w32notify.c.)