return r;
}
+static int install_error(sd_bus_error *error, int c) {
+ assert(c < 0);
+
+ if (c == -ESHUTDOWN)
+ return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit file is masked.");
+ if (c == -EADDRNOTAVAIL)
+ return sd_bus_error_setf(error, BUS_ERROR_UNIT_GENERATED, "Unit file is transient or generated.");
+ if (c == -ELOOP)
+ return sd_bus_error_setf(error, BUS_ERROR_UNIT_LINKED, "Refusing to operate on linked unit file.");
+
+ return c;
+}
+
static int method_enable_unit_files_generic(
sd_bus_message *message,
Manager *m,
return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
r = call(m->unit_file_scope, runtime, NULL, l, force, &changes, &n_changes);
- if (r == -ESHUTDOWN)
- return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit file is masked.");
- if (r == -EADDRNOTAVAIL)
- return sd_bus_error_setf(error, BUS_ERROR_UNIT_GENERATED, "Unit file is transient or generated.");
if (r < 0)
- return r;
+ return install_error(error, r);
return reply_unit_file_changes_and_free(m, message, carries_install_info ? r : -1, changes, n_changes);
}
r = unit_file_preset(m->unit_file_scope, runtime, NULL, l, mm, force, &changes, &n_changes);
if (r < 0)
- return r;
+ return install_error(error, r);
return reply_unit_file_changes_and_free(m, message, r, changes, n_changes);
}
r = call(m->unit_file_scope, runtime, NULL, l, &changes, &n_changes);
if (r < 0)
- return r;
+ return install_error(error, r);
return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes);
}
r = unit_file_revert(m->unit_file_scope, NULL, l, &changes, &n_changes);
if (r < 0)
- return r;
+ return install_error(error, r);
return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes);
}
r = unit_file_set_default(m->unit_file_scope, NULL, name, force, &changes, &n_changes);
if (r < 0)
- return r;
+ return install_error(error, r);
return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes);
}
r = unit_file_preset_all(m->unit_file_scope, runtime, NULL, mm, force, &changes, &n_changes);
if (r < 0) {
unit_file_changes_free(changes, n_changes);
- return r;
+ return install_error(error, r);
}
return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes);
return -EINVAL;
r = unit_file_add_dependency(m->unit_file_scope, runtime, NULL, l, target, dep, force, &changes, &n_changes);
- if (r == -ESHUTDOWN)
- return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit file is masked.");
- if (r == -EADDRNOTAVAIL)
- return sd_bus_error_setf(error, BUS_ERROR_UNIT_GENERATED, "Unit file is transient or generated.");
if (r < 0)
- return r;
+ return install_error(error, r);
return reply_unit_file_changes_and_free(m, message, -1, changes, n_changes);
}