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);
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;
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++;
return r;
}
-int manager_coldplug(Manager *m) {
+static int manager_coldplug(Manager *m) {
int r = 0, q;
Iterator i;
Unit *u;
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;
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;
return n;
}
-unsigned manager_dispatch_dbus_queue(Manager *m) {
+static unsigned manager_dispatch_dbus_queue(Manager *m) {
Job *j;
Unit *u;
unsigned n = 0;
}
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);
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;
int manager_open_serialization(Manager *m, FILE **_f) {
char *path = NULL;
- int fd;
+ int fd = -1;
FILE *f;
assert(_f);
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;