mirror of
https://github.com/owntone/owntone-server.git
synced 2025-01-27 06:33:21 -05:00
Handle IN_IGNORED events in inotify callback
This commit is contained in:
parent
cbab1f80e0
commit
94421b0b1b
@ -702,6 +702,8 @@ filescanner(void *arg)
|
|||||||
static void
|
static void
|
||||||
process_inotify_dir(char *path, struct wdpath *w2p, struct inotify_event *ie)
|
process_inotify_dir(char *path, struct wdpath *w2p, struct inotify_event *ie)
|
||||||
{
|
{
|
||||||
|
DPRINTF(E_DBG, L_SCAN, "Directory event: 0x%x\n", ie->mask);
|
||||||
|
|
||||||
if (ie->mask & IN_CREATE)
|
if (ie->mask & IN_CREATE)
|
||||||
{
|
{
|
||||||
process_directories(w2p->lib, path, 0);
|
process_directories(w2p->lib, path, 0);
|
||||||
@ -711,7 +713,7 @@ process_inotify_dir(char *path, struct wdpath *w2p, struct inotify_event *ie)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: other cases need more support from the DB */
|
/* TODO: other cases need more support from the DB */
|
||||||
/* IN_DELETE, IN_MODIFY, IN_MOVE_FROM / IN_MOVE_TO, IN_DELETE_SELF, IN_MOVE_SELF */
|
/* IN_UNMOUNT, IN_DELETE, IN_MODIFY, IN_MOVE_FROM / IN_MOVE_TO, IN_DELETE_SELF, IN_MOVE_SELF */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Thread: scan */
|
/* Thread: scan */
|
||||||
@ -724,6 +726,8 @@ process_inotify_file(char *path, struct wdpath *w2p, struct inotify_event *ie)
|
|||||||
int compilation;
|
int compilation;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
DPRINTF(E_DBG, L_SCAN, "File event: 0x%x\n", ie->mask);
|
||||||
|
|
||||||
if (ie->mask & (IN_MODIFY | IN_CREATE))
|
if (ie->mask & (IN_MODIFY | IN_CREATE))
|
||||||
{
|
{
|
||||||
ret = lstat(path, &sb);
|
ret = lstat(path, &sb);
|
||||||
@ -822,13 +826,22 @@ inotify_cb(int fd, short event, void *arg)
|
|||||||
node = avl_search(wd2path, &wdsearch);
|
node = avl_search(wd2path, &wdsearch);
|
||||||
if (!node)
|
if (!node)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_SCAN, "No matching wdpath found, ignoring event\n");
|
if (!(ie->mask & IN_IGNORED))
|
||||||
|
DPRINTF(E_LOG, L_SCAN, "No matching watch found, ignoring event (0x%x)\n", ie->mask);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
w2p = (struct wdpath *)node->item;
|
w2p = (struct wdpath *)node->item;
|
||||||
|
|
||||||
|
if (ie->mask & IN_IGNORED)
|
||||||
|
{
|
||||||
|
DPRINTF(E_DBG, L_SCAN, "%s deleted or backing filesystem unmounted!\n", w2p->path);
|
||||||
|
|
||||||
|
avl_delete_node(wd2path, node);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
path[0] = '\0';
|
path[0] = '\0';
|
||||||
|
|
||||||
ret = snprintf(path, PATH_MAX, "%s", w2p->path);
|
ret = snprintf(path, PATH_MAX, "%s", w2p->path);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user