X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fidev-evdev.c;h=18c48ee59259ab16319427619ece2854994fc27f;hb=c1102405c1c151b693cf92f1b704a4eb8aacee73;hp=c93ede8dc999845ce2d93d921fde7bcb812b1dd1;hpb=c93e5a62ff599528c3bf2a8656825403aaebe093;p=elogind.git diff --git a/src/libsystemd-terminal/idev-evdev.c b/src/libsystemd-terminal/idev-evdev.c index c93ede8dc..18c48ee59 100644 --- a/src/libsystemd-terminal/idev-evdev.c +++ b/src/libsystemd-terminal/idev-evdev.c @@ -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,18 +307,14 @@ 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) return -EACCES; evdev->element.readable = true; - evdev->element.writable = true; - if (flags == O_RDONLY) - evdev->element.writable = false; - else if (flags == O_WRONLY) - evdev->element.readable = false; + evdev->element.writable = !(flags & O_RDONLY); /* * TODO: We *MUST* re-sync the device so we get a delta of the changed @@ -858,7 +854,6 @@ static int managed_evdev_new(idev_element **out, idev_session *s, struct udev_de int r; assert_return(s, -EINVAL); - assert_return(s->context->sysbus, -EINVAL); assert_return(s->managed, -EINVAL); assert_return(s->context->sysbus, -EINVAL); assert_return(ud, -EINVAL);