diff --git a/autoreload_inotify.c b/autoreload_inotify.c index de9cdf8..7c5b09a 100644 --- a/autoreload_inotify.c +++ b/autoreload_inotify.c @@ -85,7 +85,7 @@ bool arl_handle(arl_t *arl) { bool reload = false; char *ptr; - const struct inotify_event *event; + const struct inotify_event *e; for (;;) { ssize_t len = read(arl->fd, buf.d, sizeof(buf.d)); @@ -95,14 +95,14 @@ bool arl_handle(arl_t *arl) continue; break; } - for (ptr = buf.d; ptr < buf.d + len; ptr += sizeof(*event) + event->len) { - event = (const struct inotify_event*) ptr; - if (event->mask & IN_CLOSE_WRITE) { + for (ptr = buf.d; ptr < buf.d + len; ptr += sizeof(*e) + e->len) { + e = (const struct inotify_event*) ptr; + if (e->wd == arl->wd_file && (e->mask & IN_CLOSE_WRITE)) { reload = true; - } else if (event->mask & IN_DELETE_SELF) { + } else if (e->wd == arl->wd_file && (e->mask & IN_DELETE_SELF)) { rm_watch(arl->fd, &arl->wd_file); - } else if (event->mask & (IN_CREATE | IN_MOVED_TO)) { - if (STREQ(event->name, arl->filename)) + } else if (e->wd == arl->wd_dir && (e->mask & (IN_CREATE | IN_MOVED_TO))) { + if (STREQ(e->name, arl->filename)) reload = true; } }