X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fshared%2Fdropin.h;h=d4531fca2da9c1feec0f4cbbdc0660aedf6ca2b3;hb=ee05e7795bb9ad7d1212dd49ad362f3e9603c4fd;hp=9c9742d0e4d580ebc27b50ca9140e1869d5d83fd;hpb=f5a4b0d3534bb13ef734a857647ab04be236c6f3;p=elogind.git diff --git a/src/shared/dropin.h b/src/shared/dropin.h index 9c9742d0e..d4531fca2 100644 --- a/src/shared/dropin.h +++ b/src/shared/dropin.h @@ -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);