mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-26 10:03:40 +03:00
systemctl: Allow 'edit' and 'cat' on unloaded units
Don't fail if the unit has a LoadError; otherwise `systemctl edit` cannot be used to correct the error (e.g. multiple "ExecStart=" lines). Remove file changed warning so cat output isn't interspersed with log messages. Fixes #829
This commit is contained in:
parent
e77435f2b0
commit
1e524ec6e2
@ -2325,42 +2325,12 @@ static int unit_find_paths(
|
||||
|
||||
if (!install_client_side() && !unit_name_is_valid(unit_name, UNIT_NAME_TEMPLATE)) {
|
||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
_cleanup_(sd_bus_message_unrefp) sd_bus_message *unit_load_error = NULL;
|
||||
_cleanup_free_ char *unit = NULL;
|
||||
char *unit_load_error_name, *unit_load_error_message;
|
||||
|
||||
unit = unit_dbus_path_from_name(unit_name);
|
||||
if (!unit)
|
||||
return log_oom();
|
||||
|
||||
if (need_daemon_reload(bus, unit_name) > 0)
|
||||
warn_unit_file_changed(unit_name);
|
||||
|
||||
r = sd_bus_get_property(
|
||||
bus,
|
||||
"org.freedesktop.systemd1",
|
||||
unit,
|
||||
"org.freedesktop.systemd1.Unit",
|
||||
"LoadError",
|
||||
&error,
|
||||
&unit_load_error,
|
||||
"(ss)");
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to get LoadError: %s", bus_error_message(&error, r));
|
||||
|
||||
r = sd_bus_message_read(
|
||||
unit_load_error,
|
||||
"(ss)",
|
||||
&unit_load_error_name,
|
||||
&unit_load_error_message);
|
||||
if (r < 0)
|
||||
return bus_log_parse_error(r);
|
||||
|
||||
if (!isempty(unit_load_error_name)) {
|
||||
log_error("Unit %s is not loaded: %s", unit_name, unit_load_error_message);
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = sd_bus_get_property_string(
|
||||
bus,
|
||||
"org.freedesktop.systemd1",
|
||||
|
Loading…
x
Reference in New Issue
Block a user