|
|
|
@ -3103,25 +3103,28 @@ stat_timer_cb (EV_P_ ev_timer *w_, int revents)
|
|
|
|
|
{
|
|
|
|
|
ev_stat *w = (ev_stat *)(((char *)w_) - offsetof (ev_stat, timer));
|
|
|
|
|
|
|
|
|
|
/* we copy this here each the time so that */
|
|
|
|
|
/* prev has the old value when the callback gets invoked */
|
|
|
|
|
w->prev = w->attr;
|
|
|
|
|
ev_statdata prev = w->attr;
|
|
|
|
|
ev_stat_stat (EV_A_ w);
|
|
|
|
|
|
|
|
|
|
/* memcmp doesn't work on netbsd, they.... do stuff to their struct stat */
|
|
|
|
|
if (
|
|
|
|
|
w->prev.st_dev != w->attr.st_dev
|
|
|
|
|
|| w->prev.st_ino != w->attr.st_ino
|
|
|
|
|
|| w->prev.st_mode != w->attr.st_mode
|
|
|
|
|
|| w->prev.st_nlink != w->attr.st_nlink
|
|
|
|
|
|| w->prev.st_uid != w->attr.st_uid
|
|
|
|
|
|| w->prev.st_gid != w->attr.st_gid
|
|
|
|
|
|| w->prev.st_rdev != w->attr.st_rdev
|
|
|
|
|
|| w->prev.st_size != w->attr.st_size
|
|
|
|
|
|| w->prev.st_atime != w->attr.st_atime
|
|
|
|
|
|| w->prev.st_mtime != w->attr.st_mtime
|
|
|
|
|
|| w->prev.st_ctime != w->attr.st_ctime
|
|
|
|
|
prev.st_dev != w->attr.st_dev
|
|
|
|
|
|| prev.st_ino != w->attr.st_ino
|
|
|
|
|
|| prev.st_mode != w->attr.st_mode
|
|
|
|
|
|| prev.st_nlink != w->attr.st_nlink
|
|
|
|
|
|| prev.st_uid != w->attr.st_uid
|
|
|
|
|
|| prev.st_gid != w->attr.st_gid
|
|
|
|
|
|| prev.st_rdev != w->attr.st_rdev
|
|
|
|
|
|| prev.st_size != w->attr.st_size
|
|
|
|
|
|| prev.st_atime != w->attr.st_atime
|
|
|
|
|
|| prev.st_mtime != w->attr.st_mtime
|
|
|
|
|
|| prev.st_ctime != w->attr.st_ctime
|
|
|
|
|
) {
|
|
|
|
|
/* we only update w->prev on actual differences */
|
|
|
|
|
/* in case we test more often than invoke the callback, */
|
|
|
|
|
/* to ensure that prev is always different to attr */
|
|
|
|
|
w->prev = prev;
|
|
|
|
|
|
|
|
|
|
#if EV_USE_INOTIFY
|
|
|
|
|
if (fs_fd >= 0)
|
|
|
|
|
{
|
|
|
|
|