diff options
Diffstat (limited to 'rcm-server-evdev.c')
-rw-r--r-- | rcm-server-evdev.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/rcm-server-evdev.c b/rcm-server-evdev.c index 15ae5ff..e39ef3d 100644 --- a/rcm-server-evdev.c +++ b/rcm-server-evdev.c @@ -372,11 +372,24 @@ evdev_setup(struct device *device, const char *path) device->evdev_fd, EPOLLIN, evdev_read, device) < 0) { printf("Failed to add event source for evdev device %s: %s\n", path, strerror(errno)); - close(device->evdev_fd); - device->evdev_fd = -1; - return -errno; + r = -errno; + evdev_close(device); + return r; } return r; } +void +evdev_close(struct device *device) +{ + if (!device) + return; + + if (device->evdev_fd < 0) + return; + + close(device->evdev_fd); + device->evdev_fd = -1; +} + |