]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/cgroups-agent/cgroups-agent.c
Merge pull request #2495 from heftig/master
[thirdparty/systemd.git] / src / cgroups-agent / cgroups-agent.c
1 /***
2 This file is part of systemd.
3
4 Copyright 2010 Lennart Poettering
5
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
10
11 systemd is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
18 ***/
19
20 #include <stdlib.h>
21
22 #include "sd-bus.h"
23
24 #include "bus-util.h"
25 #include "log.h"
26
27 int main(int argc, char *argv[]) {
28 _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
29 int r;
30
31 if (argc != 2) {
32 log_error("Incorrect number of arguments.");
33 return EXIT_FAILURE;
34 }
35
36 log_set_target(LOG_TARGET_AUTO);
37 log_parse_environment();
38 log_open();
39
40 /* We send this event to the private D-Bus socket and then the
41 * system instance will forward this to the system bus. We do
42 * this to avoid an activation loop when we start dbus when we
43 * are called when the dbus service is shut down. */
44
45 r = bus_connect_system_systemd(&bus);
46 if (r < 0) {
47 /* If we couldn't connect we assume this was triggered
48 * while systemd got restarted/transitioned from
49 * initrd to the system, so let's ignore this */
50 log_debug_errno(r, "Failed to get D-Bus connection: %m");
51 return EXIT_FAILURE;
52 }
53
54 r = sd_bus_emit_signal(bus,
55 "/org/freedesktop/systemd1/agent",
56 "org.freedesktop.systemd1.Agent",
57 "Released",
58 "s", argv[1]);
59 if (r < 0) {
60 log_debug_errno(r, "Failed to send signal message on private connection: %m");
61 return EXIT_FAILURE;
62 }
63
64 return EXIT_SUCCESS;
65 }