chiark / gitweb /
build-sys: mark systemd-firstboot man page as conditional
[elogind.git] / src / libsystemd-terminal / evcat.c
index b3f08e60bf8614819bc467637a035aea008145a8..f4c25b555658e8b84bbf9c7ea3ea53b252422c9c 100644 (file)
@@ -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");