X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fpath.h;h=1d78fe424ab7c944c7b0594415c55750310bb587;hb=4668191d0298339c70fba485f46233f79fcedc30;hp=5c06de4dfe667195fefbad3c7345b983077158d0;hpb=8fe914ec81d9f57bcc083036f528b00119ed2e3b;p=elogind.git diff --git a/src/path.h b/src/path.h index 5c06de4df..1d78fe424 100644 --- a/src/path.h +++ b/src/path.h @@ -1,4 +1,4 @@ -/*-*- Mode: C; c-basic-offset: 8 -*-*/ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ #ifndef foopathhfoo #define foopathhfoo @@ -31,15 +31,17 @@ typedef enum PathState { PATH_DEAD, PATH_WAITING, PATH_RUNNING, - PATH_MAINTENANCE, + PATH_FAILED, _PATH_STATE_MAX, _PATH_STATE_INVALID = -1 } PathState; typedef enum PathType { PATH_EXISTS, + PATH_EXISTS_GLOB, PATH_DIRECTORY_NOT_EMPTY, PATH_CHANGED, + PATH_MODIFIED, _PATH_TYPE_MAX, _PATH_TYPE_INVALID = -1 } PathType; @@ -59,6 +61,14 @@ typedef struct PathSpec { } PathSpec; +int pathspec_watch(PathSpec *s, Unit *u); +void pathspec_unwatch(PathSpec *s, Unit *u); +int pathspec_fd_event(PathSpec *s, uint32_t events); +void pathspec_done(PathSpec *s); +static inline bool pathspec_owns_inotify_fd(PathSpec *s, int fd) { + return s->inotify_fd == fd; +} + struct Path { Meta meta; @@ -69,6 +79,10 @@ struct Path { PathState state, deserialized_state; bool failure; + bool inotify_triggered; + + bool make_directory; + mode_t directory_mode; }; void path_unit_notify(Unit *u, UnitActiveState new_state);