}
void manager_drop_busname(Manager *m, const char *name) {
+ Session *session;
+ Iterator i;
char *key;
assert(m);
assert(name);
+ if (!hashmap_get(m->busnames, name))
+ return;
+
+ /* keep it if the name still owns a controller */
+ HASHMAP_FOREACH(session, m->sessions, i)
+ if (session_is_controller(session, name))
+ return;
+
key = hashmap_remove(m->busnames, name);
if (key)
free(key);
* VTs, to make sure our auto VTs never go away. */
if (name && startswith(name, "vcsa") && streq_ptr(udev_device_get_action(d), "remove"))
- r = seat_preallocate_vts(m->vtconsole);
+ r = seat_preallocate_vts(m->seat0);
udev_device_unref(d);
int manager_dispatch_console(Manager *m) {
assert(m);
+ assert(m->seat0);
- if (m->vtconsole)
- seat_read_active_vt(m->vtconsole);
+ seat_read_active_vt(m->seat0);
return 0;
}
int r;
assert(m);
- assert(pid >= 1);
assert(session);
+ if (pid < 1)
+ return -EINVAL;
+
r = cg_pid_get_unit(pid, &unit);
if (r < 0)
return r;
int r;
assert(m);
- assert(pid >= 1);
assert(user);
+ if (pid < 1)
+ return -EINVAL;
+
r = cg_pid_get_slice(pid, &unit);
if (r < 0)
return r;
return r;
/* Instantiate magic seat 0 */
- r = manager_add_seat(m, "seat0", &m->vtconsole);
+ r = manager_add_seat(m, "seat0", &m->seat0);
if (r < 0)
return r;