/* SPDX-License-Identifier: LGPL-2.1+ */
-/***
- This file is part of systemd.
-
- Copyright 2010 Lennart Poettering
-***/
#include <errno.h>
#include <sys/prctl.h>
#include "fs-util.h"
#include "install.h"
#include "log.h"
+#include "os-util.h"
#include "parse-util.h"
#include "path-util.h"
#include "selinux-access.h"
void *userdata,
sd_bus_error *error) {
+ Manager *m = userdata;
const char *t;
int r;
if (r < 0)
return r;
- return log_set_target_from_string(t);
+ if (isempty(t))
+ manager_restore_original_log_target(m);
+ else {
+ LogTarget target;
+
+ target = log_target_from_string(t);
+ if (target < 0)
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid log target '%s'", t);
+
+ manager_override_log_target(m, target);
+ }
+
+ return 0;
}
static int property_get_log_level(
void *userdata,
sd_bus_error *error) {
+ Manager *m = userdata;
const char *t;
int r;
if (r < 0)
return r;
- r = log_set_max_level_from_string(t);
- if (r == 0)
- log_info("Setting log level to %s.", t);
- return r;
+ if (isempty(t))
+ manager_restore_original_log_level(m);
+ else {
+ int level;
+
+ level = log_level_from_string(t);
+ if (level < 0)
+ return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid log level '%s'", t);
+
+ manager_override_log_level(m, level);
+ }
+
+ return 0;
}
static int property_get_progress(
return sd_bus_message_append(reply, "d", d);
}
+static int property_get_show_status(
+ sd_bus *bus,
+ const char *path,
+ const char *interface,
+ const char *property,
+ sd_bus_message *reply,
+ void *userdata,
+ sd_bus_error *error) {
+
+ Manager *m = userdata;
+ int b;
+
+ assert(bus);
+ assert(reply);
+ assert(m);
+
+ b = m->show_status > 0;
+ return sd_bus_message_append_basic(reply, 'b', &b);
+}
+
static int property_set_runtime_watchdog(
sd_bus *bus,
const char *path,
if (r < 0)
return r;
- r = bus_unit_check_load_state(u, error);
+ r = bus_unit_validate_load_state(u, error);
if (r < 0)
return r;
if (r < 0)
return r;
- r = bus_unit_check_load_state(u, error);
+ r = bus_unit_validate_load_state(u, error);
if (r < 0)
return r;
if (r < 0)
return r;
- r = bus_unit_check_load_state(u, error);
+ r = bus_unit_validate_load_state(u, error);
if (r < 0)
return r;
SD_BUS_PROPERTY("Progress", "d", property_get_progress, 0, 0),
SD_BUS_PROPERTY("Environment", "as", NULL, offsetof(Manager, environment), 0),
SD_BUS_PROPERTY("ConfirmSpawn", "b", bus_property_get_bool, offsetof(Manager, confirm_spawn), SD_BUS_VTABLE_PROPERTY_CONST),
- SD_BUS_PROPERTY("ShowStatus", "b", bus_property_get_bool, offsetof(Manager, show_status), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("ShowStatus", "b", property_get_show_status, 0, 0),
SD_BUS_PROPERTY("UnitPath", "as", NULL, offsetof(Manager, lookup_paths.search_path), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("DefaultStandardOutput", "s", bus_property_get_exec_output, offsetof(Manager, default_std_output), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("DefaultStandardError", "s", bus_property_get_exec_output, offsetof(Manager, default_std_output), SD_BUS_VTABLE_PROPERTY_CONST),