chiark / gitweb /
install: use const where we can
[elogind.git] / src / core / dbus-kill.c
index beae7da85087d29b72eb7200a227aa5f1252dafd..811adb1b5acc14e8b1ef790cca56524e204ed24c 100644 (file)
@@ -48,15 +48,39 @@ int bus_kill_context_set_transient_property(
         assert(name);
         assert(i);
 
-        if (streq(name, "SendSIGHUP")) {
+        if (streq(name, "KillMode")) {
+                const char *m;
+                KillMode k;
+
+                if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING)
+                        return -EINVAL;
+
+                dbus_message_iter_get_basic(i, &m);
+
+                k = kill_mode_from_string(m);
+                if (k < 0)
+                        return -EINVAL;
+
+                if (mode != UNIT_CHECK) {
+                        c->kill_mode = k;
+
+                        unit_write_drop_in_private_format(u, mode, name, "KillMode=%s\n", kill_mode_to_string(k));
+                }
+
+                return 1;
+
+        } else if (streq(name, "SendSIGHUP")) {
 
                 if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_BOOLEAN)
                         return -EINVAL;
 
                 if (mode != UNIT_CHECK) {
                         dbus_bool_t b;
+
                         dbus_message_iter_get_basic(i, &b);
                         c->send_sighup = b;
+
+                        unit_write_drop_in_private_format(u, mode, name, "SendSIGHUP=%s\n", yes_no(b));
                 }
 
                 return 1;
@@ -68,8 +92,11 @@ int bus_kill_context_set_transient_property(
 
                 if (mode != UNIT_CHECK) {
                         dbus_bool_t b;
+
                         dbus_message_iter_get_basic(i, &b);
                         c->send_sigkill = b;
+
+                        unit_write_drop_in_private_format(u, mode, name, "SendSIGKILL=%s\n", yes_no(b));
                 }
 
                 return 1;