Ignore outdated inotify events
This commit is contained in:
parent
6d1e00627b
commit
48e0b70ad3
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue