X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fsysview.c;h=9ee32db1bc2ab08f07f7fbb0f8a90664454d0030;hb=d90c154eb180783098683ce8e1c03cd29d9b77ce;hp=919fadf6fe544a11a34f774c4df7c9388949e1f8;hpb=1c7830cc105bfe217abe6f304f4785bbeab209f6;p=elogind.git diff --git a/src/libsystemd-terminal/sysview.c b/src/libsystemd-terminal/sysview.c index 919fadf6f..9ee32db1b 100644 --- a/src/libsystemd-terminal/sysview.c +++ b/src/libsystemd-terminal/sysview.c @@ -267,6 +267,12 @@ const char *sysview_session_get_name(sysview_session *session) { return session->name; } +sysview_seat *sysview_session_get_seat(sysview_session *session) { + assert_return(session, NULL); + + return session->seat; +} + static int session_take_control_fn(sd_bus *bus, sd_bus_message *reply, void *userdata, @@ -289,8 +295,8 @@ static int session_take_control_fn(sd_bus *bus, r = context_raise_session_control(session->seat->context, session, error); if (r < 0) - log_debug("sysview: callback failed while signalling session control '%d' on session '%s': %s", - error, session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while signalling session control '%d' on session '%s': %m", + error, session->name); return 0; } @@ -359,8 +365,8 @@ void sysview_session_release_control(sysview_session *session) { r = sd_bus_send(session->seat->context->sysbus, m, NULL); if (r < 0 && r != -ENOTCONN) - log_debug("sysview: %s: cannot send ReleaseControl: %s", - session->name, strerror(-r)); + log_debug_errno(r, "sysview: %s: cannot send ReleaseControl: %m", + session->name); } /* @@ -598,8 +604,8 @@ static void context_add_device(sysview_context *c, sysview_device *device) { r = context_raise_session_attach(c, session, device); if (r < 0) - log_debug("sysview: callback failed while attaching device '%s' to session '%s': %s", - device->name, session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while attaching device '%s' to session '%s': %m", + device->name, session->name); } } @@ -619,8 +625,8 @@ static void context_remove_device(sysview_context *c, sysview_device *device) { r = context_raise_session_detach(c, session, device); if (r < 0) - log_debug("sysview: callback failed while detaching device '%s' from session '%s': %s", - device->name, session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while detaching device '%s' from session '%s': %m", + device->name, session->name); } sysview_device_free(device); @@ -642,8 +648,8 @@ static void context_change_device(sysview_context *c, sysview_device *device, st r = context_raise_session_refresh(c, session, device, ud); if (r < 0) - log_debug("sysview: callback failed while changing device '%s' on session '%s': %s", - device->name, session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while changing device '%s' on session '%s': %m", + device->name, session->name); } } @@ -677,8 +683,8 @@ static void context_add_session(sysview_context *c, sysview_seat *seat, const ch session->public = true; r = context_raise_session_add(c, session); if (r < 0) { - log_debug("sysview: callback failed while adding session '%s': %s", - session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while adding session '%s': %m", + session->name); session->public = false; goto error; } @@ -686,8 +692,8 @@ static void context_add_session(sysview_context *c, sysview_seat *seat, const ch HASHMAP_FOREACH(device, seat->device_map, i) { r = context_raise_session_attach(c, session, device); if (r < 0) - log_debug("sysview: callback failed while attaching device '%s' to new session '%s': %s", - device->name, session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while attaching device '%s' to new session '%s': %m", + device->name, session->name); } } @@ -695,8 +701,8 @@ static void context_add_session(sysview_context *c, sysview_seat *seat, const ch error: if (r < 0) - log_debug("sysview: error while adding session '%s': %s", - id, strerror(-r)); + log_debug_errno(r, "sysview: error while adding session '%s': %m", + id); } static void context_remove_session(sysview_context *c, sysview_session *session) { @@ -713,15 +719,15 @@ static void context_remove_session(sysview_context *c, sysview_session *session) HASHMAP_FOREACH(device, session->seat->device_map, i) { r = context_raise_session_detach(c, session, device); if (r < 0) - log_debug("sysview: callback failed while detaching device '%s' from old session '%s': %s", - device->name, session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while detaching device '%s' from old session '%s': %m", + device->name, session->name); } session->public = false; r = context_raise_session_remove(c, session); if (r < 0) - log_debug("sysview: callback failed while removing session '%s': %s", - session->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while removing session '%s': %m", + session->name); } if (!session->custom) @@ -750,8 +756,8 @@ static void context_add_seat(sysview_context *c, const char *id) { seat->public = true; r = context_raise_seat_add(c, seat); if (r < 0) { - log_debug("sysview: callback failed while adding seat '%s': %s", - seat->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while adding seat '%s': %m", + seat->name); seat->public = false; } @@ -759,8 +765,8 @@ static void context_add_seat(sysview_context *c, const char *id) { error: if (r < 0) - log_debug("sysview: error while adding seat '%s': %s", - id, strerror(-r)); + log_debug_errno(r, "sysview: error while adding seat '%s': %m", + id); } static void context_remove_seat(sysview_context *c, sysview_seat *seat) { @@ -783,8 +789,8 @@ static void context_remove_seat(sysview_context *c, sysview_seat *seat) { seat->public = false; r = context_raise_seat_remove(c, seat); if (r < 0) - log_debug("sysview: callback failed while removing seat '%s': %s", - seat->name, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while removing seat '%s': %m", + seat->name); } sysview_seat_free(seat); @@ -969,11 +975,9 @@ static int context_ud_hotplug(sysview_context *c, struct udev_device *d) { return 0; r = device_new_ud(&device, seat, type, d); - if (r < 0) { - log_debug("sysview: cannot create device for udev-device '%s': %s", - syspath, strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: cannot create device for udev-device '%s': %m", + syspath); context_add_device(c, device); } @@ -1077,8 +1081,8 @@ static int context_ud_scan(sysview_context *c) { d = udev_device_new_from_syspath(c->ud, name); if (!d) { r = errno > 0 ? -errno : -EFAULT; - log_debug("sysview: cannot create udev-device for %s: %s", - name, strerror(-r)); + log_debug_errno(r, "sysview: cannot create udev-device for %s: %m", + name); continue; } @@ -1096,11 +1100,8 @@ static int context_ld_seat_new(sysview_context *c, sd_bus_message *signal) { int r; r = sd_bus_message_read(signal, "so", &id, &path); - if (r < 0) { - log_debug("sysview: cannot parse SeatNew from logind: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: cannot parse SeatNew from logind: %m"); context_add_seat(c, id); return 0; @@ -1112,11 +1113,8 @@ static int context_ld_seat_removed(sysview_context *c, sd_bus_message *signal) { int r; r = sd_bus_message_read(signal, "so", &id, &path); - if (r < 0) { - log_debug("sysview: cannot parse SeatRemoved from logind: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: cannot parse SeatRemoved from logind: %m"); seat = sysview_find_seat(c, id); if (!seat) @@ -1134,11 +1132,8 @@ static int context_ld_session_new(sysview_context *c, sd_bus_message *signal) { int r; r = sd_bus_message_read(signal, "so", &id, &path); - if (r < 0) { - log_debug("sysview: cannot parse SessionNew from logind: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: cannot parse SessionNew from logind: %m"); /* * As the dbus message didn't contain enough information, we @@ -1171,17 +1166,16 @@ static int context_ld_session_new(sysview_context *c, sd_bus_message *signal) { r = context_raise_session_filter(c, id, seatid, username, uid); if (r < 0) - log_debug("sysview: callback failed while filtering session '%s': %s", - id, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while filtering session '%s': %m", + id); else if (r > 0) context_add_session(c, seat, id); return 0; error: - log_debug("sysview: failed retrieving information for new session '%s': %s", - id, strerror(-r)); - return r; + return log_debug_errno(r, "sysview: failed retrieving information for new session '%s': %m", + id); } static int context_ld_session_removed(sysview_context *c, sd_bus_message *signal) { @@ -1190,11 +1184,8 @@ static int context_ld_session_removed(sysview_context *c, sd_bus_message *signal int r; r = sd_bus_message_read(signal, "so", &id, &path); - if (r < 0) { - log_debug("sysview: cannot parse SessionRemoved from logind: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: cannot parse SessionRemoved from logind: %m"); session = sysview_find_session(c, id); if (!session) @@ -1293,9 +1284,7 @@ static int context_ld_list_seats_fn(sd_bus *bus, return 0; error: - log_debug("sysview: erroneous ListSeats response from logind: %s", - strerror(-r)); - return r; + return log_debug_errno(r, "sysview: erroneous ListSeats response from logind: %m"); } static int context_ld_list_sessions_fn(sd_bus *bus, @@ -1338,8 +1327,8 @@ static int context_ld_list_sessions_fn(sd_bus *bus, if (seat) { r = context_raise_session_filter(c, id, seatid, username, uid); if (r < 0) - log_debug("sysview: callback failed while filtering session '%s': %s", - id, strerror(-r)); + log_debug_errno(r, "sysview: callback failed while filtering session '%s': %m", + id); else if (r > 0) context_add_session(c, seat, id); } @@ -1359,9 +1348,7 @@ static int context_ld_list_sessions_fn(sd_bus *bus, return 0; error: - log_debug("sysview: erroneous ListSessions response from logind: %s", - strerror(-r)); - return r; + return log_debug_errno(r, "sysview: erroneous ListSessions response from logind: %m"); } static int context_ld_scan(sysview_context *c) { @@ -1491,19 +1478,15 @@ static int context_scan_fn(sd_event_source *s, void *userdata) { if (!c->scanned) { r = context_ld_scan(c); - if (r < 0) { - log_debug("sysview: logind scan failed: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: logind scan failed: %m"); } /* skip device scans if no sessions are available */ if (hashmap_size(c->session_map) > 0) { r = context_ud_scan(c); - if (r < 0) { - log_debug("sysview: udev scan failed: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_debug_errno(r, "sysview: udev scan failed: %m"); HASHMAP_FOREACH(seat, c->seat_map, i) seat->scanned = true;