summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-08-22 11:58:15 +0200
committerThe Plumber <50238977+systemd-rhel-bot@users.noreply.github.com>2020-11-24 19:01:43 +0100
commitdb2816ee32fc81ba339175469e46b5dca7af8833 (patch)
treeea1cc17ae5396386629b4edbf256adab131770d8
parent55df2fd634f900419b718ed354132cc86cd533dd (diff)
downloadsystemd-db2816ee32fc81ba339175469e46b5dca7af8833.tar.gz
shared/install: fix preset operations for non-service instantiated units
Fixes https://github.com/coreos/ignition/issues/1064. (cherry picked from commit 47ab95fe4315b3f7ee5a3694460a744bb88c52fd) Related: #1812972
-rw-r--r--src/shared/install.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/shared/install.c b/src/shared/install.c
index 263b239f10..c2847df3f8 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -2937,20 +2937,17 @@ static int pattern_match_multiple_instances(
/* Compose a list of specified instances when unit name is a template */
if (unit_name_is_valid(unit_name, UNIT_NAME_TEMPLATE)) {
- _cleanup_free_ char *prefix = NULL;
_cleanup_strv_free_ char **out_strv = NULL;
- char **iter;
-
- r = unit_name_to_prefix(unit_name, &prefix);
- if (r < 0)
- return r;
+ char **iter;
STRV_FOREACH(iter, rule.instances) {
_cleanup_free_ char *name = NULL;
- r = unit_name_build(prefix, *iter, ".service", &name);
+
+ r = unit_name_replace_instance(unit_name, *iter, &name);
if (r < 0)
return r;
- r = strv_extend(&out_strv, name);
+
+ r = strv_consume(&out_strv, TAKE_PTR(name));
if (r < 0)
return r;
}