X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fevcat.c;h=f4c25b555658e8b84bbf9c7ea3ea53b252422c9c;hb=37cf8fee46025d704660a9fc1d1349fe7d0b139d;hp=b3f08e60bf8614819bc467637a035aea008145a8;hpb=4c4e4128f3763eb3d4836a23b9c46b6122e81d62;p=elogind.git diff --git a/src/libsystemd-terminal/evcat.c b/src/libsystemd-terminal/evcat.c index b3f08e60b..f4c25b555 100644 --- a/src/libsystemd-terminal/evcat.c +++ b/src/libsystemd-terminal/evcat.c @@ -137,16 +137,12 @@ static int evcat_new(Evcat **out) { return log_oom(); r = sd_pid_get_session(getpid(), &e->session); - if (r < 0) { - log_error("Cannot retrieve logind session: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot retrieve logind session: %m"); r = sd_session_get_seat(e->session, &e->seat); - if (r < 0) { - log_error("Cannot retrieve seat of logind session: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot retrieve seat of logind session: %m"); e->managed = is_managed(e->session); @@ -219,6 +215,13 @@ static void kdata_print(idev_data *data) { printf(" %-5s", (k->mods & IDEV_KBDMOD_LINUX) ? "LINUX" : ""); printf(" %-4s", (k->mods & IDEV_KBDMOD_CAPS) ? "CAPS" : ""); + /* Consumed modifiers */ + printf(" | %-5s", (k->consumed_mods & IDEV_KBDMOD_SHIFT) ? "SHIFT" : ""); + printf(" %-4s", (k->consumed_mods & IDEV_KBDMOD_CTRL) ? "CTRL" : ""); + printf(" %-3s", (k->consumed_mods & IDEV_KBDMOD_ALT) ? "ALT" : ""); + printf(" %-5s", (k->consumed_mods & IDEV_KBDMOD_LINUX) ? "LINUX" : ""); + printf(" %-4s", (k->consumed_mods & IDEV_KBDMOD_CAPS) ? "CAPS" : ""); + /* Resolved symbols */ printf(" |"); for (i = 0; i < k->n_syms; ++i) { @@ -311,17 +314,13 @@ static int evcat_sysview_fn(sysview_context *c, void *userdata, sysview_event *e name, evcat_idev_fn, e); - if (r < 0) { - log_error("Cannot create idev session: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot create idev session: %m"); if (e->managed) { r = sysview_session_take_control(ev->session_add.session); - if (r < 0) { - log_error("Cannot request session control: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot request session control: %m"); } idev_session_enable(e->idev_session); @@ -330,17 +329,16 @@ static int evcat_sysview_fn(sysview_context *c, void *userdata, sysview_event *e case SYSVIEW_EVENT_SESSION_REMOVE: idev_session_disable(e->idev_session); e->idev_session = idev_session_free(e->idev_session); - sd_event_exit(e->event, 0); + if (sd_event_get_exit_code(e->event, &r) == -ENODATA) + sd_event_exit(e->event, 0); break; case SYSVIEW_EVENT_SESSION_ATTACH: d = ev->session_attach.device; type = sysview_device_get_type(d); if (type == SYSVIEW_DEVICE_EVDEV) { r = idev_session_add_evdev(e->idev_session, sysview_device_get_ud(d)); - if (r < 0) { - log_error("Cannot add evdev device to idev: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot add evdev device to idev: %m"); } break; @@ -349,31 +347,23 @@ static int evcat_sysview_fn(sysview_context *c, void *userdata, sysview_event *e type = sysview_device_get_type(d); if (type == SYSVIEW_DEVICE_EVDEV) { r = idev_session_remove_evdev(e->idev_session, sysview_device_get_ud(d)); - if (r < 0) { - log_error("Cannot remove evdev device from idev: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot remove evdev device from idev: %m"); } break; case SYSVIEW_EVENT_SESSION_CONTROL: r = ev->session_control.error; - if (r < 0) { - log_error("Cannot acquire session control: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Cannot acquire session control: %m"); r = ioctl(1, KDSKBMODE, K_UNICODE); - if (r < 0) { - log_error("Cannot set K_UNICODE on stdout: %m"); - return -errno; - } + if (r < 0) + return log_error_errno(errno, "Cannot set K_UNICODE on stdout: %m"); r = ioctl(1, KDSETMODE, KD_TEXT); - if (r < 0) { - log_error("Cannot set KD_TEXT on stdout: %m"); - return -errno; - } + if (r < 0) + return log_error_errno(errno, "Cannot set KD_TEXT on stdout: %m"); printf("\n");