generator: add helper function for writing unit files
It doesn't save too much, but it's a common pattern so I think it's worth to factor this out.
This commit is contained in:
@@ -61,7 +61,7 @@ static int create_disk(
|
||||
const char *password,
|
||||
const char *options) {
|
||||
|
||||
_cleanup_free_ char *p = NULL, *n = NULL, *d = NULL, *u = NULL, *e = NULL,
|
||||
_cleanup_free_ char *n = NULL, *d = NULL, *u = NULL, *e = NULL,
|
||||
*filtered = NULL, *u_escaped = NULL, *password_escaped = NULL, *filtered_escaped = NULL, *name_escaped = NULL;
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
const char *dmname;
|
||||
@@ -90,18 +90,14 @@ static int create_disk(
|
||||
if (!e)
|
||||
return log_oom();
|
||||
|
||||
r = unit_name_build("systemd-cryptsetup", e, ".service", &n);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to generate unit name: %m");
|
||||
|
||||
p = strjoin(arg_dest, "/", n);
|
||||
if (!p)
|
||||
return log_oom();
|
||||
|
||||
u = fstab_node_to_udev_node(device);
|
||||
if (!u)
|
||||
return log_oom();
|
||||
|
||||
r = unit_name_build("systemd-cryptsetup", e, ".service", &n);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to generate unit name: %m");
|
||||
|
||||
u_escaped = specifier_escape(u);
|
||||
if (!u_escaped)
|
||||
return log_oom();
|
||||
@@ -114,14 +110,11 @@ static int create_disk(
|
||||
if (!password_escaped)
|
||||
return log_oom();
|
||||
|
||||
f = fopen(p, "wxe");
|
||||
if (!f)
|
||||
return log_error_errno(errno, "Failed to create unit file %s: %m", p);
|
||||
|
||||
(void) __fsetlocking(f, FSETLOCKING_BYCALLER);
|
||||
r = generator_open_unit_file(arg_dest, NULL, n, &f);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
fprintf(f,
|
||||
"# Automatically generated by systemd-cryptsetup-generator\n\n"
|
||||
"[Unit]\n"
|
||||
"Description=Cryptography Setup for %%I\n"
|
||||
"Documentation=man:crypttab(5) man:systemd-cryptsetup-generator(8) man:systemd-cryptsetup@.service(8)\n"
|
||||
@@ -210,7 +203,7 @@ static int create_disk(
|
||||
|
||||
r = fflush_and_check(f);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to write file %s: %m", p);
|
||||
return log_error_errno(r, "Failed to write unit file %s: %m", n);
|
||||
|
||||
if (!noauto) {
|
||||
r = generator_add_symlink(arg_dest, d, "wants", n);
|
||||
|
||||
Reference in New Issue
Block a user