X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fdropin.h;h=d4531fca2da9c1feec0f4cbbdc0660aedf6ca2b3;hp=2958632963152511e976b823b15984241744d345;hb=e777ddfd71f3b2d3217ffe74f287388832915d0b;hpb=2968644080fd103062f070e83edd620e0a58c44d diff --git a/src/shared/dropin.h b/src/shared/dropin.h index 295863296..d4531fca2 100644 --- a/src/shared/dropin.h +++ b/src/shared/dropin.h @@ -21,11 +21,42 @@ along with systemd; If not, see . ***/ -int drop_in_file(const char *dir, const char *unit, +#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); -int write_drop_in(const char *dir, const char *unit, +int write_drop_in(const char *dir, const char *unit, unsigned level, const char *name, const char *data); -int write_drop_in_format(const char *dir, const char *unit, - const char *name, const char *format, ...); +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);