chiark / gitweb /
load-fragment: properly parse Nice= value
[elogind.git] / src / manager.c
index 25d85eaf110727f2d790a85a447e0eb92533979f..2714df1152f38631965a302fe5cf77ec0dad30ff 100644 (file)
@@ -222,6 +222,9 @@ int manager_new(ManagerRunningAs running_as, Manager **_m) {
         if (!(m->environment = strv_copy(environ)))
                 goto fail;
 
+        if (!(m->default_controllers = strv_new("cpu", NULL)))
+                goto fail;
+
         if (!(m->units = hashmap_new(string_hash_func, string_compare_func)))
                 goto fail;
 
@@ -256,7 +259,7 @@ int manager_new(ManagerRunningAs running_as, Manager **_m) {
                 goto fail;
 
         /* Try to connect to the busses, if possible. */
-        if ((r = bus_init(m)) < 0)
+        if ((r = bus_init(m, running_as != MANAGER_SYSTEM)) < 0)
                 goto fail;
 
 #ifdef HAVE_AUDIT
@@ -461,6 +464,8 @@ void manager_free(Manager *m) {
         lookup_paths_free(&m->lookup_paths);
         strv_free(m->environment);
 
+        strv_free(m->default_controllers);
+
         hashmap_free(m->cgroup_bondings);
         set_free_free(m->unit_path_cache);
 
@@ -2097,7 +2102,7 @@ static int manager_process_signal_fd(Manager *m) {
 
                         if (!u || UNIT_IS_ACTIVE_OR_RELOADING(unit_active_state(u))) {
                                 log_info("Trying to reconnect to bus...");
-                                bus_init(m);
+                                bus_init(m, true);
                         }
 
                         if (!u || !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(u))) {
@@ -2423,7 +2428,6 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
         union sockaddr_union sa;
         int n = 0;
         char *message = NULL;
-        ssize_t r;
 
         /* Don't generate plymouth events if the service was already
          * started and we're just deserializing */
@@ -2447,8 +2451,8 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
 
         zero(sa);
         sa.sa.sa_family = AF_UNIX;
-        strncpy(sa.un.sun_path+1, "/ply-boot-protocol", sizeof(sa.un.sun_path)-1);
-        if (connect(fd, &sa.sa, sizeof(sa.un)) < 0) {
+        strncpy(sa.un.sun_path+1, "/org/freedesktop/plymouthd", sizeof(sa.un.sun_path)-1);
+        if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
 
                 if (errno != EPIPE &&
                     errno != EAGAIN &&
@@ -2467,7 +2471,7 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
         }
 
         errno = 0;
-        if ((r = write(fd, message, n + 1)) != n + 1) {
+        if (write(fd, message, n + 1) != n + 1) {
 
                 if (errno != EPIPE &&
                     errno != EAGAIN &&
@@ -2988,6 +2992,20 @@ void manager_undo_generators(Manager *m) {
         m->generator_unit_path = NULL;
 }
 
+int manager_set_default_controllers(Manager *m, char **controllers) {
+        char **l;
+
+        assert(m);
+
+        if (!(l = strv_copy(controllers)))
+                return -ENOMEM;
+
+        strv_free(m->default_controllers);
+        m->default_controllers = l;
+
+        return 0;
+}
+
 static const char* const manager_running_as_table[_MANAGER_RUNNING_AS_MAX] = {
         [MANAGER_SYSTEM] = "system",
         [MANAGER_USER] = "user"