chiark / gitweb /
core: allow setting RemainAfterExit= for transient services
[elogind.git] / src / core / dbus-service.c
index d63ca01c4fdacce387112880bc8a8480d857b420..1a44e1fd1b4057876760b64de3f0efce832712d8 100644 (file)
@@ -180,7 +180,22 @@ static int bus_service_set_transient_property(
         assert(s);
         assert(i);
 
-        if (streq(name, "ExecStart")) {
+        if (streq(name, "RemainAfterExit")) {
+                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);
+
+                        s->remain_after_exit = b;
+                        unit_write_drop_in_private_format(UNIT(s), mode, name, "RemainAfterExit=%s\n", yes_no(b));
+                }
+
+                return 1;
+
+        } else if (streq(name, "ExecStart")) {
                 DBusMessageIter sub;
                 unsigned n = 0;
 
@@ -276,7 +291,7 @@ static int bus_service_set_transient_property(
                         }
 
                         fflush(f);
-                        unit_write_drop_in_private_section(UNIT(s), mode, name, buf);
+                        unit_write_drop_in_private(UNIT(s), mode, name, buf);
                 }
 
                 return 1;