From 7c78a19322962bb386f87bcaf37bf650cca1c400 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Wed, 2 Mar 2022 21:02:21 +0100 Subject: [PATCH] systemctl: print better message if default target is masked If the default target is masked, `systemctl get-default` prints Failed to get default target: Operation not possible due to RF-kill That's a bit too cryptic, so let's make it clear what's actually happening. Fixes #26589. --- src/core/dbus-manager.c | 2 ++ src/systemctl/systemctl-set-default.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 20e1ffe26f..047a7b4424 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -2200,6 +2200,8 @@ static int method_get_default_target(sd_bus_message *message, void *userdata, sd return r; r = unit_file_get_default(m->unit_file_scope, NULL, &default_target); + if (r == -ERFKILL) + sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit file is masked."); if (r < 0) return r; diff --git a/src/systemctl/systemctl-set-default.c b/src/systemctl/systemctl-set-default.c index c2dbf97649..7ddba17272 100644 --- a/src/systemctl/systemctl-set-default.c +++ b/src/systemctl/systemctl-set-default.c @@ -50,6 +50,8 @@ static int determine_default(char **ret_name) { if (install_client_side()) { r = unit_file_get_default(arg_scope, arg_root, ret_name); + if (r == -ERFKILL) + return log_error_errno(r, "Failed to get default target: Unit file is masked."); if (r < 0) return log_error_errno(r, "Failed to get default target: %m"); return 0;