Hi,
> + switch (mask) {
> + case IN_CREATE:
> + if (event->mask & IN_ISDIR) {
> + /*
> + * Add the watchpoint first so we
> + * don't miss events in this subdir
> + */
> + name = g_strndup(event->name, event->len);
> + path = g_strdup_printf("%s/%s", parent->path, name);
> +
> + watchfd = usb_mtp_add_watch(s->inotifyfd, path);
> + g_free(path);
> + g_free(name);
> +
> + if (watchfd == -1) {
> + continue;
> + }
> + }
So, to follow up my mail from today in the morning:
I think this is not needed here ...
> usb_mtp_object_readdir(s, o);
> + if (usb_mtp_inotify_mon(s, o)) {
> + fprintf(stderr, "usb-mtp: adding watch for %s failed\n",
> o->path);
> + }
... but here we have to add the watch first, then read the directory.
When reading the directory first we'll miss new files which are added
after readdir() but before add_watch().
cheers,
Gerd