From be49ecd6ee3af4aa83572ca413aa457058e3573d Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Thu, 30 Oct 2014 20:12:05 -0400 Subject: [PATCH] shared/install: avoid prematurely rejecting "missing" units f7101b7368df copied some logic to prevent enabling masked units, but also added a check which causes attempts to enable templated units to fail. Since we know the logic beyond this check will properly handle units which truly do not exist, we can rely on the unit file state comparison to suffice for expressing the intent of f7101b7368df. ref: https://bugs.archlinux.org/task/42616 (Cherry-picked from 0ffce503cd6e5a5ff5ba5cd1cc23684cfb8bb9e3) Resolves: #1199981 --- src/shared/install.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/shared/install.c b/src/shared/install.c index 7a29798..13db732 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1522,12 +1522,10 @@ int unit_file_enable( STRV_FOREACH(i, files) { UnitFileState state; + /* We only want to know if this unit is masked, so we ignore + * errors from unit_file_get_state, deferring other checks. + * This allows templated units to be enabled on the fly. */ state = unit_file_get_state(scope, root_dir, *i); - if (state < 0) { - log_error("Failed to get unit file state for %s: %s", *i, strerror(-state)); - return state; - } - if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) { log_error("Failed to enable unit: Unit %s is masked", *i); return -ENOTSUP;