};
bool exists = false;
- char *k;
+ char *k, *slash;
int r;
assert(p);
if ((s->primary_wd = inotify_add_watch(s->inotify_fd, k, flags_table[s->type])) >= 0)
exists = true;
- for (;;) {
+ do {
int flags;
- char *slash;
/* This assumes the path was passed through path_kill_slashes()! */
if (!(slash = strrchr(k, '/')))
break;
- *slash = 0;
+ /* Trim the path at the last slash. Keep the slash if it's the root dir. */
+ slash[slash == k] = 0;
flags = IN_DELETE_SELF|IN_MOVE_SELF|IN_ATTRIB;
if (!exists)
if (inotify_add_watch(s->inotify_fd, k, flags) >= 0)
exists = true;
- }
+ } while (slash != k);
return 0;
path_state_to_string(old_state),
path_state_to_string(state));
- unit_notify(UNIT(p), state_translation_table[old_state], state_translation_table[state]);
+ unit_notify(UNIT(p), state_translation_table[old_state], state_translation_table[state], true);
}
static void path_enter_waiting(Path *p, bool initial, bool recheck);
}
if (good) {
+ log_debug("%s got triggered.", p->meta.id);
path_enter_running(p);
return;
}
p->state != PATH_RUNNING)
return;
- log_debug("inotify wakeup on %s.", u->meta.id);
+ /* log_debug("inotify wakeup on %s.", u->meta.id); */
if (events != EPOLLIN) {
log_error("Got Invalid poll event on inotify.");