mirror of
https://github.com/troglobit/finit.git
synced 2026-11-06 15:51:03 +00:00
iwatch: handle watching paths for same inode
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
84248e1c56
commit
e0d3aa8e06
2 files changed
+11
-4
No files matched your search
+2
-2
@@ -48,7 +48,7 @@ int iwatch_init(struct iwatch *iw)
|
|||||||
|
|
||||||
iw->fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
|
iw->fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
|
||||||
if (iw->fd < 0) {
|
if (iw->fd < 0) {
|
||||||
_pe("inotify_init()");
|
_pe("Failed creating inotify descriptor");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
@@ -90,7 +90,7 @@ int iwatch_add(struct iwatch *iw, char *file, uint32_t mask)
|
|||||||
|
|
||||||
wd = inotify_add_watch(iw->fd, path, IWATCH_MASK | mask);
|
wd = inotify_add_watch(iw->fd, path, IWATCH_MASK | mask);
|
||||||
if (wd < 0) {
|
if (wd < 0) {
|
||||||
_pe("inotify_add_watch(%s)", path);
|
_pe("Failed adding watcher for %s", path);
|
||||||
free(path);
|
free(path);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-2
@@ -29,9 +29,16 @@
|
|||||||
#include <lite/queue.h>
|
#include <lite/queue.h>
|
||||||
#include <sys/inotify.h>
|
#include <sys/inotify.h>
|
||||||
|
|
||||||
|
#ifndef IN_MASK_CREATE
|
||||||
|
#define IN_MASK_CREATE 0x10000000 /* since Linux 4.18 */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Monitors changes to both directories and files by default */
|
/*
|
||||||
#define IWATCH_MASK (IN_CREATE | IN_DELETE | IN_MODIFY | IN_ATTRIB | IN_MOVE)
|
* Monitors changes to both directories and files by default, but only
|
||||||
|
* add watcher once (IN_MASK_CREATE) to avoid clobbering any already
|
||||||
|
* monitored paths.
|
||||||
|
*/
|
||||||
|
#define IWATCH_MASK (IN_CREATE | IN_DELETE | IN_MODIFY | IN_ATTRIB | IN_MOVE | IN_MASK_CREATE)
|
||||||
|
|
||||||
struct iwatch_path {
|
struct iwatch_path {
|
||||||
TAILQ_ENTRY(iwatch_path) link;
|
TAILQ_ENTRY(iwatch_path) link;
|
||||||
|
|||||||
Reference in new issue
Block a user