chiark / gitweb /
unit: remove union Unit
[elogind.git] / src / path.h
index 116fc63ff726daa6ac53f3fb581f9c3e79f7eab1..04d43c8d512d3955509077b8ffa69ed3b2c29b85 100644 (file)
@@ -41,6 +41,7 @@ typedef enum PathType {
         PATH_EXISTS_GLOB,
         PATH_DIRECTORY_NOT_EMPTY,
         PATH_CHANGED,
+        PATH_MODIFIED,
         _PATH_TYPE_MAX,
         _PATH_TYPE_INVALID = -1
 } PathType;
@@ -57,15 +58,23 @@ typedef struct PathSpec {
         int primary_wd;
 
         bool previous_exists;
-
 } PathSpec;
 
+int path_spec_watch(PathSpec *s, Unit *u);
+void path_spec_unwatch(PathSpec *s, Unit *u);
+int path_spec_fd_event(PathSpec *s, uint32_t events);
+void path_spec_done(PathSpec *s);
+
+static inline bool path_spec_owns_inotify_fd(PathSpec *s, int fd) {
+        return s->inotify_fd == fd;
+}
+
 struct Path {
-        Meta meta;
+        Unit meta;
 
         LIST_HEAD(PathSpec, specs);
 
-        Unit *unit;
+        UnitRef unit;
 
         PathState state, deserialized_state;