mirror of
https://github.com/systemd/systemd
synced 2024-10-04 15:21:01 +00:00
shared/dropin: minor modernization
This commit is contained in:
parent
1ea7bda77f
commit
f9ef2aad28
|
@ -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);
|
||||
assert(ret_unit_dir);
|
||||
assert(ret_path);
|
||||
|
||||
n = xescape(name, "/.");
|
||||
if (!n)
|
||||
return -ENOMEM;
|
||||
if (!filename_is_valid(n))
|
||||
return -EINVAL;
|
||||
|
||||
if (level != UINT_MAX)
|
||||
xsprintf(prefix, "%u-", level);
|
||||
|
||||
b = xescape(name, "/.");
|
||||
if (!b)
|
||||
unit_dir = path_join(dir, strjoina(unit, ".d"));
|
||||
path = strjoin(unit_dir, "/", prefix, n, ".conf");
|
||||
if (!unit_dir || !path)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!filename_is_valid(b))
|
||||
return -EINVAL;
|
||||
|
||||
p = strjoin(dir, "/", unit, ".d");
|
||||
q = strjoin(p, "/", prefix, b, ".conf");
|
||||
if (!p || !q)
|
||||
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(
|
||||
|
|
|
@ -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 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(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 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,
|
||||
|
|
Loading…
Reference in a new issue