X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind.c;h=b7c8f71a52a3d362b6bae01ddb089757caccaef5;hb=49cf4ece205bf23c39c30a633a20e22260fc1706;hp=e334bebdf84230ad8cf1db82918bc9650e326397;hpb=cc3773810855956bad92337cee8fa193584ab62e;p=elogind.git diff --git a/src/login/logind.c b/src/login/logind.c index e334bebdf..b7c8f71a5 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -34,6 +34,7 @@ #include "bus-util.h" #include "bus-error.h" #include "logind.h" +#include "udev-util.h" Manager *manager_new(void) { Manager *m; @@ -90,12 +91,14 @@ Manager *manager_new(void) { return NULL; } - r = sd_event_new(&m->event); + r = sd_event_default(&m->event); if (r < 0) { manager_free(m); return NULL; } + sd_event_set_watchdog(m->event, true); + return m; } @@ -177,7 +180,7 @@ void manager_free(Manager *m) { free(m); } -int manager_enumerate_devices(Manager *m) { +static int manager_enumerate_devices(Manager *m) { struct udev_list_entry *item = NULL, *first = NULL; struct udev_enumerate *e; int r; @@ -226,7 +229,7 @@ finish: return r; } -int manager_enumerate_buttons(Manager *m) { +static int manager_enumerate_buttons(Manager *m) { struct udev_list_entry *item = NULL, *first = NULL; struct udev_enumerate *e; int r; @@ -284,7 +287,7 @@ finish: return r; } -int manager_enumerate_seats(Manager *m) { +static int manager_enumerate_seats(Manager *m) { _cleanup_closedir_ DIR *d = NULL; struct dirent *de; int r = 0; @@ -357,7 +360,7 @@ static int manager_enumerate_linger_users(Manager *m) { return r; } -int manager_enumerate_users(Manager *m) { +static int manager_enumerate_users(Manager *m) { _cleanup_closedir_ DIR *d = NULL; struct dirent *de; int r, k; @@ -401,7 +404,7 @@ int manager_enumerate_users(Manager *m) { return r; } -int manager_enumerate_sessions(Manager *m) { +static int manager_enumerate_sessions(Manager *m) { _cleanup_closedir_ DIR *d = NULL; struct dirent *de; int r = 0; @@ -449,7 +452,7 @@ int manager_enumerate_sessions(Manager *m) { return r; } -int manager_enumerate_inhibitors(Manager *m) { +static int manager_enumerate_inhibitors(Manager *m) { _cleanup_closedir_ DIR *d = NULL; struct dirent *de; int r = 0; @@ -488,9 +491,8 @@ int manager_enumerate_inhibitors(Manager *m) { } static int manager_dispatch_seat_udev(sd_event_source *s, int fd, uint32_t revents, void *userdata) { + _cleanup_udev_device_unref_ struct udev_device *d = NULL; Manager *m = userdata; - struct udev_device *d; - int r; assert(m); @@ -498,16 +500,13 @@ static int manager_dispatch_seat_udev(sd_event_source *s, int fd, uint32_t reven if (!d) return -ENOMEM; - r = manager_process_seat_device(m, d); - udev_device_unref(d); - - return r; + manager_process_seat_device(m, d); + return 0; } static int manager_dispatch_device_udev(sd_event_source *s, int fd, uint32_t revents, void *userdata) { + _cleanup_udev_device_unref_ struct udev_device *d = NULL; Manager *m = userdata; - struct udev_device *d; - int r; assert(m); @@ -515,16 +514,13 @@ static int manager_dispatch_device_udev(sd_event_source *s, int fd, uint32_t rev if (!d) return -ENOMEM; - r = manager_process_seat_device(m, d); - udev_device_unref(d); - - return r; + manager_process_seat_device(m, d); + return 0; } static int manager_dispatch_vcsa_udev(sd_event_source *s, int fd, uint32_t revents, void *userdata) { + _cleanup_udev_device_unref_ struct udev_device *d = NULL; Manager *m = userdata; - struct udev_device *d; - int r = 0; const char *name; assert(m); @@ -539,17 +535,14 @@ static int manager_dispatch_vcsa_udev(sd_event_source *s, int fd, uint32_t reven * 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->seat0); + seat_preallocate_vts(m->seat0); - udev_device_unref(d); - - return r; + return 0; } static int manager_dispatch_button_udev(sd_event_source *s, int fd, uint32_t revents, void *userdata) { + _cleanup_udev_device_unref_ struct udev_device *d = NULL; Manager *m = userdata; - struct udev_device *d; - int r; assert(m); @@ -557,10 +550,8 @@ static int manager_dispatch_button_udev(sd_event_source *s, int fd, uint32_t rev if (!d) return -ENOMEM; - r = manager_process_button_device(m, d); - udev_device_unref(d); - - return r; + manager_process_button_device(m, d); + return 0; } static int manager_dispatch_console(sd_event_source *s, int fd, uint32_t revents, void *userdata) { @@ -571,7 +562,6 @@ static int manager_dispatch_console(sd_event_source *s, int fd, uint32_t revents assert(m->console_active_fd == fd); seat_read_active_vt(m->seat0); - return 0; } @@ -605,7 +595,7 @@ static int manager_connect_bus(Manager *m) { assert(m); assert(!m->bus); - r = sd_bus_open_system(&m->bus); + r = sd_bus_default_system(&m->bus); if (r < 0) { log_error("Failed to connect to system bus: %s", strerror(-r)); return r; @@ -725,17 +715,12 @@ static int manager_connect_bus(Manager *m) { return r; } - r = sd_bus_request_name(m->bus, "org.freedesktop.login1", SD_BUS_NAME_DO_NOT_QUEUE); + r = sd_bus_request_name(m->bus, "org.freedesktop.login1", 0); if (r < 0) { log_error("Failed to register name: %s", strerror(-r)); return r; } - if (r != SD_BUS_NAME_PRIMARY_OWNER) { - log_error("Failed to acquire name."); - return -EEXIST; - } - r = sd_bus_attach_event(m->bus, m->event, 0); if (r < 0) { log_error("Failed to attach bus to event loop: %s", strerror(-r)); @@ -958,7 +943,7 @@ static int manager_dispatch_idle_action(sd_event_source *s, uint64_t t, void *us return r; } - r = sd_event_source_set_priority(m->idle_action_event_source, SD_PRIORITY_IDLE+10); + r = sd_event_source_set_priority(m->idle_action_event_source, SD_EVENT_PRIORITY_IDLE+10); if (r < 0) { log_error("Failed to set idle event source priority: %s", strerror(-r)); return r;