• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

systemd / systemd / 15232239991

24 May 2025 08:01PM UTC coverage: 72.053% (-0.02%) from 72.07%
15232239991

push

github

web-flow
docs: add man pages for sd_device_enumerator_[new,ref,unref,unrefp] (#37586)

For #20929.

299160 of 415197 relevant lines covered (72.05%)

703671.29 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

58.97
/src/shared/bus-log-control-api.c
1
/* SPDX-License-Identifier: LGPL-2.1-or-later */
2

3
#include "sd-bus.h"
4

5
#include "alloc-util.h"
6
#include "bus-get-properties.h"
7
#include "bus-log-control-api.h"
8
#include "bus-object.h"
9
#include "log.h"
10
#include "syslog-util.h"
11

12
int bus_log_control_api_register(sd_bus *bus) {
1,019✔
13
        return bus_add_implementation(bus, &log_control_object, NULL);
1,019✔
14
}
15

16
int bus_property_get_log_level(
21✔
17
                sd_bus *bus,
18
                const char *path,
19
                const char *interface,
20
                const char *property,
21
                sd_bus_message *reply,
22
                void *userdata,
23
                sd_bus_error *error) {
24

25
        _cleanup_free_ char *t = NULL;
21✔
26
        int r;
21✔
27

28
        assert(bus);
21✔
29
        assert(reply);
21✔
30

31
        r = log_level_to_string_alloc(log_get_max_level(), &t);
21✔
32
        if (r < 0)
21✔
33
                return r;
34

35
        return sd_bus_message_append(reply, "s", t);
21✔
36
}
37

38
int bus_property_set_log_level(
13✔
39
                sd_bus *bus,
40
                const char *path,
41
                const char *interface,
42
                const char *property,
43
                sd_bus_message *value,
44
                void *userdata,
45
                sd_bus_error *error) {
46

47
        const char *t;
13✔
48
        int r;
13✔
49

50
        assert(bus);
13✔
51
        assert(value);
13✔
52

53
        r = sd_bus_message_read(value, "s", &t);
13✔
54
        if (r < 0)
13✔
55
                return r;
13✔
56

57
        r = log_level_from_string(t);
13✔
58
        if (r < 0)
13✔
59
                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid log level '%s'", t);
×
60

61
        log_info("Setting log level to %s.", t);
13✔
62
        log_set_max_level(r);
13✔
63

64
        return 0;
65
}
66

67
BUS_DEFINE_PROPERTY_GET_GLOBAL(bus_property_get_log_target, "s", log_target_to_string(log_get_target()));
21✔
68

69
int bus_property_set_log_target(
×
70
                sd_bus *bus,
71
                const char *path,
72
                const char *interface,
73
                const char *property,
74
                sd_bus_message *value,
75
                void *userdata,
76
                sd_bus_error *error) {
77

78
        LogTarget target;
×
79
        const char *t;
×
80
        int r;
×
81

82
        assert(bus);
×
83
        assert(value);
×
84

85
        r = sd_bus_message_read(value, "s", &t);
×
86
        if (r < 0)
×
87
                return r;
×
88

89
        target = log_target_from_string(t);
×
90
        if (target < 0)
×
91
                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid log target '%s'", t);
×
92

93
        log_info("Setting log target to %s.", log_target_to_string(target));
×
94
        log_set_target_and_open(target);
×
95

96
        return 0;
97
}
98

99
BUS_DEFINE_PROPERTY_GET_GLOBAL(bus_property_get_syslog_identifier, "s", program_invocation_short_name);
×
100

101
static const sd_bus_vtable log_control_vtable[] = {
102
        SD_BUS_VTABLE_START(0),
103

104
        SD_BUS_WRITABLE_PROPERTY("LogLevel", "s", bus_property_get_log_level, bus_property_set_log_level, 0, 0),
105
        SD_BUS_WRITABLE_PROPERTY("LogTarget", "s", bus_property_get_log_target, bus_property_set_log_target, 0, 0),
106
        SD_BUS_PROPERTY("SyslogIdentifier", "s", bus_property_get_syslog_identifier, 0, 0),
107

108
        /* One of those days we might want to add a similar, second interface to cover common service
109
         * operations such as Reload(), Reexecute(), Exit() …  and maybe some properties exposing version
110
         * number and other meta-data of the service. */
111

112
        SD_BUS_VTABLE_END,
113
};
114

115
const BusObjectImplementation log_control_object = {
116
        "/org/freedesktop/LogControl1",
117
        "org.freedesktop.LogControl1",
118
        .vtables = BUS_VTABLES(log_control_vtable),
119
};
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc