#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;
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;
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(
#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,