chiark / gitweb /
util: rework rm_rf() logic
[elogind.git] / src / shared / dropin.h
index 9c9742d0e4d580ebc27b50ca9140e1869d5d83fd..d4531fca2da9c1feec0f4cbbdc0660aedf6ca2b3 100644 (file)
@@ -22,6 +22,8 @@
 ***/
 
 #include "macro.h"
+#include "set.h"
+#include "unit-name.h"
 
 int drop_in_file(const char *dir, const char *unit, unsigned level,
                  const char *name, char **_p, char **_q);
@@ -31,3 +33,30 @@ int write_drop_in(const char *dir, const char *unit, unsigned level,
 
 int write_drop_in_format(const char *dir, const char *unit, unsigned level,
                          const char *name, const char *format, ...) _printf_(5, 6);
+
+/**
+ * This callback will be called for each directory entry @entry,
+ * with @filepath being the full path to the entry.
+ *
+ * If return value is negative, loop will be aborted.
+ */
+typedef int (*dependency_consumer_t)(UnitDependency dependency,
+                                     const char *entry,
+                                     const char* filepath,
+                                     void *arg);
+
+int unit_file_process_dir(
+                Set * unit_path_cache,
+                const char *unit_path,
+                const char *name,
+                const char *suffix,
+                UnitDependency dependency,
+                dependency_consumer_t consumer,
+                void *arg,
+                char ***strv);
+
+int unit_file_find_dropin_paths(
+                char **lookup_path,
+                Set *unit_path_cache,
+                Set *names,
+                char ***paths);