[systemd-devel] [PATCH] core: don't allow enabling if unit is masked
Lennart Poettering
lennart at poettering.net
Wed Oct 8 02:54:19 PDT 2014
On Tue, 07.10.14 13:35, Jan Synacek (jsynacek at redhat.com) wrote:
> ---
> src/shared/install.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/src/shared/install.c b/src/shared/install.c
> index fa064c2..945bb27 100644
> --- a/src/shared/install.c
> +++ b/src/shared/install.c
> @@ -1516,6 +1516,19 @@ int unit_file_enable(
> return r;
>
> STRV_FOREACH(i, files) {
> + UnitFileState state;
> +
> + 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;
> + }
> +
Looks mostly OK. However, we should probably use a more useful error
here. Maybe EADDRNOTAVAIL or so. Even better though would be to
actually change the call to take an sd_bus_error argument and then
return a proper error message that can be passed back to the bus
clients with a real explanation.
Logging about this with log_error() is probably not a good idea.
Also, the same logic should be added to unit_file_link() and
unit_file_preset() I figure.
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list