chiark / gitweb /
journald: adjust permissions for rotated files
[elogind.git] / src / path.h
index e0feeea7117145362cf5e9ddad3e7edb45acd4f3..efb6b5eb44fe418c5f26d522f47e914cb36ee4bd 100644 (file)
@@ -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,41 +31,66 @@ 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;
 
 typedef struct PathSpec {
-        PathType type;
         char *path;
 
+        Watch watch;
+
+        LIST_FIELDS(struct PathSpec, spec);
+
+        PathType type;
         int inotify_fd;
         int primary_wd;
+
         bool previous_exists;
+} PathSpec;
 
-        Watch watch;
+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);
 
-        LIST_FIELDS(struct PathSpec, spec);
-} PathSpec;
+static inline bool path_spec_owns_inotify_fd(PathSpec *s, int fd) {
+        return s->inotify_fd == fd;
+}
+
+typedef enum PathResult {
+        PATH_SUCCESS,
+        PATH_FAILURE_RESOURCES,
+        _PATH_RESULT_MAX,
+        _PATH_RESULT_INVALID = -1
+} PathResult;
 
 struct Path {
-        Meta meta;
+        Unit meta;
 
         LIST_HEAD(PathSpec, specs);
 
+        UnitRef unit;
+
         PathState state, deserialized_state;
-        Unit *unit;
 
-        bool failure;
+        bool inotify_triggered;
+
+        bool make_directory;
+        mode_t directory_mode;
+
+        PathResult result;
 };
 
 void path_unit_notify(Unit *u, UnitActiveState new_state);
@@ -82,4 +107,7 @@ PathState path_state_from_string(const char *s);
 const char* path_type_to_string(PathType i);
 PathType path_type_from_string(const char *s);
 
+const char* path_result_to_string(PathResult i);
+PathResult path_result_from_string(const char *s);
+
 #endif