]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/dbus-kill.c
man: add not to not use -x in bug reports
[thirdparty/systemd.git] / src / core / dbus-kill.c
CommitLineData
4819ff03
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3/***
4 This file is part of systemd.
5
6 Copyright 2012 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
22#include <errno.h>
23#include <dbus/dbus.h>
24
25#include "dbus-kill.h"
26#include "dbus-common.h"
27
a6c0353b 28static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_kill_append_mode, kill_mode, KillMode);
4819ff03
LP
29
30const BusProperty bus_kill_context_properties[] = {
31 { "KillMode", bus_kill_append_mode, "s", offsetof(KillContext, kill_mode) },
32 { "KillSignal", bus_property_append_int, "i", offsetof(KillContext, kill_signal) },
33 { "SendSIGKILL", bus_property_append_bool, "b", offsetof(KillContext, send_sigkill) },
82659fd7 34 { "SendSIGHUP", bus_property_append_bool, "b", offsetof(KillContext, send_sighup) },
a6c0353b 35 {}
4819ff03 36};
a6c0353b
LP
37
38int bus_kill_context_set_transient_property(
39 Unit *u,
40 KillContext *c,
41 const char *name,
42 DBusMessageIter *i,
43 UnitSetPropertiesMode mode,
44 DBusError *error) {
45
46 assert(u);
47 assert(c);
48 assert(name);
49 assert(i);
50
405e0255
LP
51 if (streq(name, "KillMode")) {
52 const char *m;
53 KillMode k;
54
55 if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING)
56 return -EINVAL;
57
58 dbus_message_iter_get_basic(i, &m);
59
60 k = kill_mode_from_string(m);
61 if (k < 0)
62 return -EINVAL;
63
64 if (mode != UNIT_CHECK) {
65 c->kill_mode = k;
66
67 unit_write_drop_in_private_format(u, mode, name, "KillMode=%s\n", kill_mode_to_string(k));
68 }
69
70 return 1;
71
72 } else if (streq(name, "SendSIGHUP")) {
a6c0353b
LP
73
74 if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_BOOLEAN)
75 return -EINVAL;
76
77 if (mode != UNIT_CHECK) {
78 dbus_bool_t b;
c3df8d3d 79
a6c0353b
LP
80 dbus_message_iter_get_basic(i, &b);
81 c->send_sighup = b;
c3df8d3d 82
405e0255 83 unit_write_drop_in_private_format(u, mode, name, "SendSIGHUP=%s\n", yes_no(b));
a6c0353b
LP
84 }
85
86 return 1;
87
88 } else if (streq(name, "SendSIGKILL")) {
89
90 if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_BOOLEAN)
91 return -EINVAL;
92
93 if (mode != UNIT_CHECK) {
94 dbus_bool_t b;
c3df8d3d 95
a6c0353b
LP
96 dbus_message_iter_get_basic(i, &b);
97 c->send_sigkill = b;
c3df8d3d 98
405e0255 99 unit_write_drop_in_private_format(u, mode, name, "SendSIGKILL=%s\n", yes_no(b));
a6c0353b
LP
100 }
101
102 return 1;
103
104 }
105
106 return 0;
107}