From: Mike Yuan Date: Mon, 13 May 2024 08:48:32 +0000 (+0800) Subject: shared/dropin: minor modernization X-Git-Tag: v257-rc1~1198^2~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f9ef2aad282decfe440699bf4da3ee554ef2fa6f;p=thirdparty%2Fsystemd.git shared/dropin: minor modernization --- diff --git a/src/shared/dropin.c b/src/shared/dropin.c index 9a786d06039..c3050634bd3 100644 --- a/src/shared/dropin.c +++ b/src/shared/dropin.c @@ -23,39 +23,48 @@ #include "strv.h" #include "unit-name.h" -int drop_in_file(const char *dir, const char *unit, unsigned level, - const char *name, char **ret_p, char **ret_q) { +int drop_in_file( + const char *dir, + const char *unit, + unsigned level, + const char *name, + char **ret_unit_dir, + char **ret_path) { char prefix[DECIMAL_STR_MAX(unsigned) + 1] = {}; - _cleanup_free_ char *b = NULL, *p = NULL, *q = NULL; + _cleanup_free_ char *n = NULL, *unit_dir = NULL, *path = NULL; + assert(dir); assert(unit); assert(name); - assert(ret_p); - assert(ret_q); - - if (level != UINT_MAX) - xsprintf(prefix, "%u-", level); + assert(ret_unit_dir); + assert(ret_path); - b = xescape(name, "/."); - if (!b) + n = xescape(name, "/."); + if (!n) return -ENOMEM; - - if (!filename_is_valid(b)) + if (!filename_is_valid(n)) return -EINVAL; - p = strjoin(dir, "/", unit, ".d"); - q = strjoin(p, "/", prefix, b, ".conf"); - if (!p || !q) + if (level != UINT_MAX) + xsprintf(prefix, "%u-", level); + + unit_dir = path_join(dir, strjoina(unit, ".d")); + path = strjoin(unit_dir, "/", prefix, n, ".conf"); + if (!unit_dir || !path) return -ENOMEM; - *ret_p = TAKE_PTR(p); - *ret_q = TAKE_PTR(q); + *ret_unit_dir = TAKE_PTR(unit_dir); + *ret_path = TAKE_PTR(path); return 0; } -int write_drop_in(const char *dir, const char *unit, unsigned level, - const char *name, const char *data) { +int write_drop_in( + const char *dir, + const char *unit, + unsigned level, + const char *name, + const char *data) { _cleanup_free_ char *p = NULL, *q = NULL; int r; @@ -73,9 +82,14 @@ int write_drop_in(const char *dir, const char *unit, unsigned level, return write_string_file_atomic_label(q, data); } -int write_drop_in_format(const char *dir, const char *unit, unsigned level, - const char *name, const char *format, ...) { - _cleanup_free_ char *p = NULL; +int write_drop_in_format( + const char *dir, + const char *unit, + unsigned level, + const char *name, + const char *format, ...) { + + _cleanup_free_ char *content = NULL; va_list ap; int r; @@ -85,13 +99,13 @@ int write_drop_in_format(const char *dir, const char *unit, unsigned level, assert(format); va_start(ap, format); - r = vasprintf(&p, format, ap); + r = vasprintf(&content, format, ap); va_end(ap); if (r < 0) return -ENOMEM; - return write_drop_in(dir, unit, level, name, p); + return write_drop_in(dir, unit, level, name, content); } static int unit_file_add_dir( diff --git a/src/shared/dropin.h b/src/shared/dropin.h index 54cceaff1ac..8107944de91 100644 --- a/src/shared/dropin.h +++ b/src/shared/dropin.h @@ -6,14 +6,26 @@ #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, unsigned level, - const char *name, const char *data); +int drop_in_file( + const char *dir, + const char *unit, + unsigned level, + const char *name, + char **ret_unit_dir, + char **ret_path); -int write_drop_in_format(const char *dir, const char *unit, unsigned level, - const char *name, const char *format, ...) _printf_(5, 6); +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, + unsigned level, + const char *name, + const char *format, ...) _printf_(5, 6); int unit_file_find_dropin_paths( const char *original_root,