X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogind.c;h=4633a5ef29109c9cf51538dfdc99deb5de96a4fb;hb=d68af58657ce0e99594dff199fbb9b319cf6af96;hp=ca48aa137fa4b9b75f03e1f7610c269f1007c0c6;hpb=f975e971accc4d50c73ae53167db3df7a7099cf2;p=elogind.git diff --git a/src/logind.c b/src/logind.c index ca48aa137..4633a5ef2 100644 --- a/src/logind.c +++ b/src/logind.c @@ -274,8 +274,7 @@ int manager_process_seat_device(Manager *m, struct udev_device *d) { if (streq_ptr(udev_device_get_action(d), "remove")) { - /* FIXME: use syspath instead of sysname here, as soon as fb driver is fixed */ - device = hashmap_get(m->devices, udev_device_get_sysname(d)); + device = hashmap_get(m->devices, udev_device_get_syspath(d)); if (!device) return 0; @@ -295,7 +294,7 @@ int manager_process_seat_device(Manager *m, struct udev_device *d) { return 0; } - r = manager_add_device(m, udev_device_get_sysname(d), &device); + r = manager_add_device(m, udev_device_get_syspath(d), &device); if (r < 0) return r; @@ -414,6 +413,7 @@ static int manager_enumerate_users_from_cgroup(Manager *m) { int r = 0; char *name; DIR *d; + int k; r = cg_enumerate_subgroups(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_path, &d); if (r < 0) { @@ -424,9 +424,8 @@ static int manager_enumerate_users_from_cgroup(Manager *m) { return r; } - while ((r = cg_read_subgroup(d, &name)) > 0) { + while ((k = cg_read_subgroup(d, &name)) > 0) { User *user; - int k; k = manager_add_user_by_name(m, name, &user); if (k < 0) { @@ -447,6 +446,9 @@ static int manager_enumerate_users_from_cgroup(Manager *m) { free(name); } + if (r >= 0 && k < 0) + r = k; + closedir(d); return r; @@ -1193,14 +1195,14 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); + umask(0022); + if (argc != 1) { log_error("This program takes no arguments."); r = -EINVAL; goto finish; } - umask(0022); - m = manager_new(); if (!m) { log_error("Out of memory");