mirror of
https://github.com/systemd/systemd.git
synced 2026-08-03 06:30:30 +00:00
core: wrap long lines
This commit is contained in:
@@ -38,8 +38,8 @@
|
||||
#include "virt.h"
|
||||
#include "watchdog.h"
|
||||
|
||||
/* Require 16MiB free in /run/systemd for reloading/reexecing. After all we need to serialize our state there, and if
|
||||
* we can't we'll fail badly. */
|
||||
/* Require 16MiB free in /run/systemd for reloading/reexecing. After all we need to serialize our state
|
||||
* there, and if we can't we'll fail badly. */
|
||||
#define RELOAD_DISK_SPACE_MIN (UINT64_C(16) * UINT64_C(1024) * UINT64_C(1024))
|
||||
|
||||
static UnitFileFlags unit_file_bools_to_flags(bool runtime, bool force) {
|
||||
@@ -363,8 +363,8 @@ static int bus_get_unit_by_name(Manager *m, sd_bus_message *message, const char
|
||||
assert(message);
|
||||
assert(ret_unit);
|
||||
|
||||
/* More or less a wrapper around manager_get_unit() that generates nice errors and has one trick up its sleeve:
|
||||
* if the name is specified empty we use the client's unit. */
|
||||
/* More or less a wrapper around manager_get_unit() that generates nice errors and has one trick up
|
||||
* its sleeve: if the name is specified empty we use the client's unit. */
|
||||
|
||||
if (isempty(name)) {
|
||||
_cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL;
|
||||
@@ -520,7 +520,8 @@ static int method_get_unit_by_invocation_id(sd_bus_message *message, void *userd
|
||||
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
if (!u)
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Client " PID_FMT " not member of any unit.", pid);
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT,
|
||||
"Client " PID_FMT " not member of any unit.", pid);
|
||||
} else {
|
||||
u = hashmap_get(m->units_by_invocation_id, &id);
|
||||
if (!u)
|
||||
@@ -531,8 +532,9 @@ static int method_get_unit_by_invocation_id(sd_bus_message *message, void *userd
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* So here's a special trick: the bus path we return actually references the unit by its invocation ID instead
|
||||
* of the unit name. This means it stays valid only as long as the invocation ID stays the same. */
|
||||
/* So here's a special trick: the bus path we return actually references the unit by its invocation
|
||||
* ID instead of the unit name. This means it stays valid only as long as the invocation ID stays the
|
||||
* same. */
|
||||
path = unit_dbus_path_invocation_id(u);
|
||||
if (!path)
|
||||
return -ENOMEM;
|
||||
@@ -552,7 +554,9 @@ static int method_get_unit_by_control_group(sd_bus_message *message, void *userd
|
||||
|
||||
u = manager_get_unit_by_cgroup(m, cgroup);
|
||||
if (!u)
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Control group '%s' is not valid or not managed by this instance", cgroup);
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT,
|
||||
"Control group '%s' is not valid or not managed by this instance",
|
||||
cgroup);
|
||||
|
||||
return reply_unit_path(u, message, error);
|
||||
}
|
||||
@@ -851,17 +855,21 @@ static int transient_unit_from_message(
|
||||
|
||||
t = unit_name_to_type(name);
|
||||
if (t < 0)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid unit name or type.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Invalid unit name or type.");
|
||||
|
||||
if (!unit_vtable[t]->can_transient)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unit type %s does not support transient units.", unit_type_to_string(t));
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Unit type %s does not support transient units.",
|
||||
unit_type_to_string(t));
|
||||
|
||||
r = manager_load_unit(m, name, NULL, error, &u);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!unit_is_pristine(u))
|
||||
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS, "Unit %s already exists.", name);
|
||||
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS,
|
||||
"Unit %s already exists.", name);
|
||||
|
||||
/* OK, the unit failed to load and is unreferenced, now let's
|
||||
* fill in the transient data instead */
|
||||
@@ -1435,7 +1443,8 @@ static int method_reboot(sd_bus_message *message, void *userdata, sd_bus_error *
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Reboot is only supported for system managers.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Reboot is only supported for system managers.");
|
||||
|
||||
m->objective = MANAGER_REBOOT;
|
||||
|
||||
@@ -1454,7 +1463,8 @@ static int method_poweroff(sd_bus_message *message, void *userdata, sd_bus_error
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Powering off is only supported for system managers.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Powering off is only supported for system managers.");
|
||||
|
||||
m->objective = MANAGER_POWEROFF;
|
||||
|
||||
@@ -1473,7 +1483,8 @@ static int method_halt(sd_bus_message *message, void *userdata, sd_bus_error *er
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Halt is only supported for system managers.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Halt is only supported for system managers.");
|
||||
|
||||
m->objective = MANAGER_HALT;
|
||||
|
||||
@@ -1492,7 +1503,8 @@ static int method_kexec(sd_bus_message *message, void *userdata, sd_bus_error *e
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "KExec is only supported for system managers.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"KExec is only supported for system managers.");
|
||||
|
||||
m->objective = MANAGER_KEXEC;
|
||||
|
||||
@@ -1517,7 +1529,7 @@ static int method_switch_root(sd_bus_message *message, void *userdata, sd_bus_er
|
||||
|
||||
if (available < RELOAD_DISK_SPACE_MIN) {
|
||||
char fb_available[FORMAT_BYTES_MAX], fb_need[FORMAT_BYTES_MAX];
|
||||
log_warning("Dangerously low amount of free space on /run/systemd, root switching operation might not complete successfully. "
|
||||
log_warning("Dangerously low amount of free space on /run/systemd, root switching might fail.\n"
|
||||
"Currently, %s are free, but %s are suggested. Proceeding anyway.",
|
||||
format_bytes(fb_available, sizeof(fb_available), available),
|
||||
format_bytes(fb_need, sizeof(fb_need), RELOAD_DISK_SPACE_MIN));
|
||||
@@ -1528,41 +1540,53 @@ static int method_switch_root(sd_bus_message *message, void *userdata, sd_bus_er
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Root switching is only supported by system manager.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Root switching is only supported by system manager.");
|
||||
|
||||
r = sd_bus_message_read(message, "ss", &root, &init);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (isempty(root))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "New root directory may not be the empty string.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"New root directory may not be the empty string.");
|
||||
if (!path_is_absolute(root))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "New root path '%s' is not absolute.", root);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"New root path '%s' is not absolute.", root);
|
||||
if (path_equal(root, "/"))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "New root directory cannot be the old root directory.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"New root directory cannot be the old root directory.");
|
||||
|
||||
/* Safety check */
|
||||
if (isempty(init)) {
|
||||
r = path_is_os_tree(root);
|
||||
if (r < 0)
|
||||
return sd_bus_error_set_errnof(error, r, "Failed to determine whether root path '%s' contains an OS tree: %m", root);
|
||||
return sd_bus_error_set_errnof(error, r,
|
||||
"Failed to determine whether root path '%s' contains an OS tree: %m",
|
||||
root);
|
||||
if (r == 0)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Specified switch root path '%s' does not seem to be an OS tree. os-release file is missing.", root);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Specified switch root path '%s' does not seem to be an OS tree. os-release file is missing.",
|
||||
root);
|
||||
} else {
|
||||
_cleanup_free_ char *chased = NULL;
|
||||
|
||||
if (!path_is_absolute(init))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Path to init binary '%s' not absolute.", init);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Path to init binary '%s' not absolute.", init);
|
||||
|
||||
r = chase_symlinks(init, root, CHASE_PREFIX_ROOT|CHASE_TRAIL_SLASH, &chased, NULL);
|
||||
if (r < 0)
|
||||
return sd_bus_error_set_errnof(error, r, "Could not resolve init executable %s: %m", init);
|
||||
return sd_bus_error_set_errnof(error, r,
|
||||
"Could not resolve init executable %s: %m", init);
|
||||
|
||||
if (laccess(chased, X_OK) < 0) {
|
||||
if (errno == EACCES)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Init binary %s is not executable.", init);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Init binary %s is not executable.", init);
|
||||
|
||||
return sd_bus_error_set_errnof(error, r, "Could not check whether init binary %s is executable: %m", init);
|
||||
return sd_bus_error_set_errnof(error, r,
|
||||
"Could not check whether init binary %s is executable: %m", init);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1632,7 +1656,8 @@ static int method_unset_environment(sd_bus_message *message, void *userdata, sd_
|
||||
return r;
|
||||
|
||||
if (!strv_env_name_or_assignment_is_valid(minus))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment variable names or assignments");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Invalid environment variable names or assignments");
|
||||
|
||||
r = bus_verify_set_environment_async(m, message, error);
|
||||
if (r < 0)
|
||||
@@ -1668,9 +1693,11 @@ static int method_unset_and_set_environment(sd_bus_message *message, void *userd
|
||||
return r;
|
||||
|
||||
if (!strv_env_name_or_assignment_is_valid(minus))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment variable names or assignments");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Invalid environment variable names or assignments");
|
||||
if (!strv_env_is_valid(plus))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment assignments");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Invalid environment assignments");
|
||||
|
||||
r = bus_verify_set_environment_async(m, message, error);
|
||||
if (r < 0)
|
||||
@@ -1723,13 +1750,16 @@ static int method_lookup_dynamic_user_by_name(sd_bus_message *message, void *use
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Dynamic users are only supported in the system instance.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Dynamic users are only supported in the system instance.");
|
||||
if (!valid_user_group_name(name, VALID_USER_RELAX))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "User name invalid: %s", name);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"User name invalid: %s", name);
|
||||
|
||||
r = dynamic_user_lookup_name(m, name, &uid);
|
||||
if (r == -ESRCH)
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_DYNAMIC_USER, "Dynamic user %s does not exist.", name);
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_DYNAMIC_USER,
|
||||
"Dynamic user %s does not exist.", name);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -1751,13 +1781,16 @@ static int method_lookup_dynamic_user_by_uid(sd_bus_message *message, void *user
|
||||
return r;
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Dynamic users are only supported in the system instance.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Dynamic users are only supported in the system instance.");
|
||||
if (!uid_is_valid(uid))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "User ID invalid: " UID_FMT, uid);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"User ID invalid: " UID_FMT, uid);
|
||||
|
||||
r = dynamic_user_lookup_uid(m, uid, &name);
|
||||
if (r == -ESRCH)
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_DYNAMIC_USER, "Dynamic user ID " UID_FMT " does not exist.", uid);
|
||||
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_DYNAMIC_USER,
|
||||
"Dynamic user ID " UID_FMT " does not exist.", uid);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -1776,7 +1809,8 @@ static int method_get_dynamic_users(sd_bus_message *message, void *userdata, sd_
|
||||
assert_cc(sizeof(uid_t) == sizeof(uint32_t));
|
||||
|
||||
if (!MANAGER_IS_SYSTEM(m))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED, "Dynamic users are only supported in the system instance.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
|
||||
"Dynamic users are only supported in the system instance.");
|
||||
|
||||
r = sd_bus_message_new_method_return(message, &reply);
|
||||
if (r < 0)
|
||||
@@ -1793,7 +1827,8 @@ static int method_get_dynamic_users(sd_bus_message *message, void *userdata, sd_
|
||||
if (r == -EAGAIN) /* not realized yet? */
|
||||
continue;
|
||||
if (r < 0)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_FAILED, "Failed to look up a dynamic user.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_FAILED,
|
||||
"Failed to look up a dynamic user.");
|
||||
|
||||
r = sd_bus_message_append(reply, "(us)", uid, d->name);
|
||||
if (r < 0)
|
||||
@@ -2001,7 +2036,10 @@ static int send_unit_files_changed(sd_bus *bus, void *userdata) {
|
||||
|
||||
assert(bus);
|
||||
|
||||
r = sd_bus_message_new_signal(bus, &message, "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "UnitFilesChanged");
|
||||
r = sd_bus_message_new_signal(bus, &message,
|
||||
"/org/freedesktop/systemd1",
|
||||
"org.freedesktop.systemd1.Manager",
|
||||
"UnitFilesChanged");
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -2129,8 +2167,8 @@ static int reply_unit_file_changes_and_free(
|
||||
good = true;
|
||||
}
|
||||
|
||||
/* If there was a failed change, and no successful change, then return the first failure as proper method call
|
||||
* error. */
|
||||
/* If there was a failed change, and no successful change, then return the first failure as proper
|
||||
* method call error. */
|
||||
if (bad && !good)
|
||||
return install_error(error, 0, changes, n_changes);
|
||||
|
||||
@@ -2555,7 +2593,8 @@ static int method_abandon_scope(sd_bus_message *message, void *userdata, sd_bus_
|
||||
return r;
|
||||
|
||||
if (u->type != UNIT_SCOPE)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unit '%s' is not a scope unit, refusing.", name);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Unit '%s' is not a scope unit, refusing.", name);
|
||||
|
||||
return bus_scope_method_abandon(message, u, error);
|
||||
}
|
||||
@@ -2576,7 +2615,8 @@ static int method_set_show_status(sd_bus_message *message, void *userdata, sd_bu
|
||||
if (!isempty(t)) {
|
||||
mode = show_status_from_string(t);
|
||||
if (mode < 0)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid show status '%s'", t);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS,
|
||||
"Invalid show status '%s'", t);
|
||||
}
|
||||
|
||||
manager_override_show_status(m, mode, "bus");
|
||||
@@ -3335,7 +3375,11 @@ static int send_finished(sd_bus *bus, void *userdata) {
|
||||
assert(bus);
|
||||
assert(times);
|
||||
|
||||
r = sd_bus_message_new_signal(bus, &message, "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "StartupFinished");
|
||||
r = sd_bus_message_new_signal(bus,
|
||||
&message,
|
||||
"/org/freedesktop/systemd1",
|
||||
"org.freedesktop.systemd1.Manager",
|
||||
"StartupFinished");
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -1864,8 +1864,8 @@ static int bus_unit_set_live_property(
|
||||
assert(name);
|
||||
assert(message);
|
||||
|
||||
/* Handles setting properties both "live" (i.e. at any time during runtime), and during creation (for transient
|
||||
* units that are being created). */
|
||||
/* Handles setting properties both "live" (i.e. at any time during runtime), and during creation (for
|
||||
* transient units that are being created). */
|
||||
|
||||
if (streq(name, "Description")) {
|
||||
const char *d;
|
||||
@@ -2093,8 +2093,8 @@ static int bus_unit_set_transient_property(
|
||||
assert(name);
|
||||
assert(message);
|
||||
|
||||
/* Handles settings when transient units are created. This settings cannot be altered anymore after the unit
|
||||
* has been created. */
|
||||
/* Handles settings when transient units are created. This settings cannot be altered anymore after
|
||||
* the unit has been created. */
|
||||
|
||||
if (streq(name, "SourcePath"))
|
||||
return bus_set_transient_path(u, name, &u->source_path, message, flags, error);
|
||||
@@ -2402,7 +2402,8 @@ int bus_unit_set_properties(
|
||||
return r;
|
||||
|
||||
if (!UNIT_VTABLE(u)->bus_set_property)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_PROPERTY_READ_ONLY, "Objects of this type do not support setting properties.");
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_PROPERTY_READ_ONLY,
|
||||
"Objects of this type do not support setting properties.");
|
||||
|
||||
r = sd_bus_message_enter_container(message, 'v', NULL);
|
||||
if (r < 0)
|
||||
@@ -2420,7 +2421,8 @@ int bus_unit_set_properties(
|
||||
return r;
|
||||
|
||||
if (r == 0)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_PROPERTY_READ_ONLY, "Cannot set property %s, or unknown property.", name);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_PROPERTY_READ_ONLY,
|
||||
"Cannot set property %s, or unknown property.", name);
|
||||
|
||||
r = sd_bus_message_exit_container(message);
|
||||
if (r < 0)
|
||||
@@ -2538,8 +2540,8 @@ int bus_unit_track_add_sender(Unit *u, sd_bus_message *m) {
|
||||
int bus_unit_track_remove_sender(Unit *u, sd_bus_message *m) {
|
||||
assert(u);
|
||||
|
||||
/* If we haven't allocated the bus track object yet, then there's definitely no reference taken yet, return an
|
||||
* error */
|
||||
/* If we haven't allocated the bus track object yet, then there's definitely no reference taken yet,
|
||||
* return an error */
|
||||
if (!u->bus_track)
|
||||
return -EUNATCH;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user