systemctl: fallback if logind doesn't support new flag
Follow-up for 665a3d6d15
This commit is contained in:
committed by
Luca Boccassi
parent
28d2c32f0b
commit
d334c1211f
@@ -89,6 +89,18 @@ int logind_reboot(enum action a) {
|
||||
SET_FLAG(flags, SD_LOGIND_SOFT_REBOOT, a == ACTION_SOFT_REBOOT);
|
||||
|
||||
r = bus_call_method(bus, bus_login_mgr, method_with_flags, &error, NULL, "t", flags);
|
||||
if (r < 0 && FLAGS_SET(flags, SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP) &&
|
||||
sd_bus_error_has_name(&error, SD_BUS_ERROR_INVALID_ARGS)) {
|
||||
sd_bus_error_free(&error);
|
||||
r = bus_call_method(
|
||||
bus,
|
||||
bus_login_mgr,
|
||||
method_with_flags,
|
||||
&error,
|
||||
NULL,
|
||||
"t",
|
||||
flags & ~SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP);
|
||||
}
|
||||
if (r >= 0)
|
||||
return 0;
|
||||
if (!sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD))
|
||||
|
||||
Reference in New Issue
Block a user