mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
generator: teach generator_add_symlink_full() to optionally make alias symlinks rather than just .wants/ style symlinks
This commit is contained in:
@@ -80,7 +80,6 @@ int generator_open_unit_file_full(
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int generator_add_symlink_full(
|
||||
const char *dir,
|
||||
const char *dst,
|
||||
@@ -93,11 +92,13 @@ int generator_add_symlink_full(
|
||||
|
||||
assert(dir);
|
||||
assert(dst);
|
||||
assert(dep_type);
|
||||
assert(src);
|
||||
|
||||
/* Adds a symlink from <dst>.<dep_type>/ to <src> (if src is absolute) or ../<src> (otherwise). If
|
||||
* <instance> is specified, then <src> must be a template unit name, and we'll instantiate it. */
|
||||
/* If 'dep_type' is specified adds a symlink from <dst>.<dep_type>/ to <src> (if src is absolute) or ../<src> (otherwise).
|
||||
*
|
||||
* If 'dep_type' is NULL, it will create a symlink to <src> (i.e. create an alias.
|
||||
*
|
||||
* If <instance> is specified, then <src> must be a template unit name, and we'll instantiate it. */
|
||||
|
||||
r = path_extract_directory(src, &dn);
|
||||
if (r < 0 && r != -EDESTADDRREQ) /* EDESTADDRREQ → just a file name was passed */
|
||||
@@ -115,11 +116,19 @@ int generator_add_symlink_full(
|
||||
return log_error_errno(r, "Failed to instantiate '%s' for '%s': %m", fn, instance);
|
||||
}
|
||||
|
||||
from = path_join(dn ?: "..", fn);
|
||||
if (!from)
|
||||
return log_oom();
|
||||
if (dep_type) { /* Create a .wants/ style dep */
|
||||
from = path_join(dn ?: "..", fn);
|
||||
if (!from)
|
||||
return log_oom();
|
||||
|
||||
to = strjoin(dir, "/", dst, ".", dep_type, "/", instantiated ?: fn);
|
||||
to = strjoin(dir, "/", dst, ".", dep_type, "/", instantiated ?: fn);
|
||||
} else { /* or create an alias */
|
||||
from = dn ? path_join(dn, fn) : strdup(fn);
|
||||
if (!from)
|
||||
return log_oom();
|
||||
|
||||
to = strjoin(dir, "/", dst);
|
||||
}
|
||||
if (!to)
|
||||
return log_oom();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user