chiark / gitweb /
terminal: fix wrong return value in idev if fcntl() fails
[elogind.git] / src / libsystemd-terminal / idev-evdev.c
index c93ede8dc999845ce2d93d921fde7bcb812b1dd1..241743c3fdc7fafb0c9c5b2eabbd2acd88cabb16 100644 (file)
@@ -41,7 +41,7 @@ typedef struct unmanaged_evdev unmanaged_evdev;
 typedef struct managed_evdev managed_evdev;
 
 struct idev_evdev {
-        struct idev_element element;
+        idev_element element;
         struct libevdev *evdev;
         int fd;
         sd_event_source *fd_src;
@@ -52,12 +52,12 @@ struct idev_evdev {
 };
 
 struct unmanaged_evdev {
-        struct idev_evdev evdev;
+        idev_evdev evdev;
         char *devnode;
 };
 
 struct managed_evdev {
-        struct idev_evdev evdev;
+        idev_evdev evdev;
         dev_t devnum;
 
         sd_bus_slot *slot_pause_device;
@@ -217,7 +217,7 @@ static int idev_evdev_io(idev_evdev *evdev) {
 
 error:
         idev_evdev_hup(evdev);
-        return r;
+        return 0; /* idev_evdev_hup() handles the error so discard it */
 }
 
 static int idev_evdev_event_fn(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
@@ -307,7 +307,7 @@ static int idev_evdev_resume(idev_evdev *evdev, int dev_fd) {
 
         flags = fcntl(fd, F_GETFL, 0);
         if (flags < 0)
-                return r;
+                return -errno;
 
         flags &= O_ACCMODE;
         if (flags == O_WRONLY)