chiark / gitweb /
use #pragma once instead of foo*foo define guards
[elogind.git] / src / core / manager.c
index b45a2e11a5a1cde016bd0b529e9468fc33346a10..c99a022cd5390ffc42d66848c223d3c4d6f0ab8a 100644 (file)
@@ -486,6 +486,7 @@ static int manager_default_environment(Manager *m) {
 int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
         Manager *m;
         int r = -ENOMEM;
+        bool try_bus_connect = false;
 
         assert(_m);
         assert(running_as >= 0);
@@ -557,15 +558,18 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
         if (r < 0)
                 goto fail;
 
-        /* Try to connect to the busses, if possible. */
-        if ((running_as == SYSTEMD_USER && getenv("DBUS_SESSION_BUS_ADDRESS")) ||
-            running_as == SYSTEMD_SYSTEM) {
-                r = bus_init(m, reexecuting || running_as != SYSTEMD_SYSTEM);
-                if (r < 0)
-                        goto fail;
-        } else
+        if (running_as == SYSTEMD_SYSTEM)
+                try_bus_connect = reexecuting;
+        else if (getenv("DBUS_SESSION_BUS_ADDRESS"))
+                try_bus_connect = true;
+        else
                 log_debug("Skipping DBus session bus connection attempt - no DBUS_SESSION_BUS_ADDRESS set...");
 
+        /* Try to connect to the busses, if possible. */
+        r = bus_init(m, try_bus_connect);
+        if (r < 0)
+                goto fail;
+
         m->taint_usr = dir_is_empty("/usr") > 0;
 
         *_m = m;
@@ -672,7 +676,7 @@ static unsigned manager_dispatch_gc_queue(Manager *m) {
 
                 unit_gc_sweep(u, gc_marker);
 
-                LIST_REMOVE(Unit, gc_queue, m->gc_queue, u);
+                LIST_REMOVE(gc_queue, m->gc_queue, u);
                 u->in_gc_queue = false;
 
                 n++;
@@ -796,7 +800,7 @@ int manager_enumerate(Manager *m) {
         return r;
 }
 
-int manager_coldplug(Manager *m) {
+static int manager_coldplug(Manager *m) {
         int r = 0, q;
         Iterator i;
         Unit *u;
@@ -876,6 +880,29 @@ fail:
         m->unit_path_cache = NULL;
 }
 
+
+static int manager_distribute_fds(Manager *m, FDSet *fds) {
+        Unit *u;
+        Iterator i;
+        int r;
+
+        assert(m);
+
+        HASHMAP_FOREACH(u, m->units, i) {
+
+                if (fdset_size(fds) <= 0)
+                        break;
+
+                if (UNIT_VTABLE(u)->distribute_fds) {
+                        r = UNIT_VTABLE(u)->distribute_fds(u, fds);
+                        if (r < 0)
+                                return r;
+                }
+        }
+
+        return 0;
+}
+
 int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
         int r, q;
 
@@ -1183,7 +1210,7 @@ void manager_clear_jobs(Manager *m) {
                 job_finish_and_invalidate(j, JOB_CANCELED, false);
 }
 
-unsigned manager_dispatch_run_queue(Manager *m) {
+static unsigned manager_dispatch_run_queue(Manager *m) {
         Job *j;
         unsigned n = 0;
 
@@ -1211,7 +1238,7 @@ unsigned manager_dispatch_run_queue(Manager *m) {
         return n;
 }
 
-unsigned manager_dispatch_dbus_queue(Manager *m) {
+static unsigned manager_dispatch_dbus_queue(Manager *m) {
         Job *j;
         Unit *u;
         unsigned n = 0;
@@ -1762,7 +1789,7 @@ static int process_event(Manager *m, struct epoll_event *ev) {
         }
 
         case WATCH_IDLE_PIPE: {
-                m->no_console_output = true;
+                m->no_console_output = m->n_on_console > 0;
 
                 manager_unwatch_idle_pipe(m);
                 close_idle_pipe(m);
@@ -1792,7 +1819,7 @@ int manager_loop(Manager *m) {
         manager_check_finished(m);
 
         /* There might still be some zombies hanging around from
-         * before we were exec()'ed. Leat's reap them */
+         * before we were exec()'ed. Let's reap them. */
         r = manager_dispatch_sigchld(m);
         if (r < 0)
                 return r;
@@ -2058,7 +2085,7 @@ void manager_dispatch_bus_query_pid_done(
 
 int manager_open_serialization(Manager *m, FILE **_f) {
         char *path = NULL;
-        int fd;
+        int fd = -1;
         FILE *f;
 
         assert(_f);
@@ -2294,28 +2321,6 @@ finish:
         return r;
 }
 
-int manager_distribute_fds(Manager *m, FDSet *fds) {
-        Unit *u;
-        Iterator i;
-        int r;
-
-        assert(m);
-
-        HASHMAP_FOREACH(u, m->units, i) {
-
-                if (fdset_size(fds) <= 0)
-                        break;
-
-                if (UNIT_VTABLE(u)->distribute_fds) {
-                        r = UNIT_VTABLE(u)->distribute_fds(u, fds);
-                        if (r < 0)
-                                return r;
-                }
-        }
-
-        return 0;
-}
-
 int manager_reload(Manager *m) {
         int r, q;
         _cleanup_fclose_ FILE *f = NULL;