diff options
author | David Härdeman <david@hardeman.nu> | 2017-04-18 22:18:17 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2017-04-18 22:18:17 +0200 |
commit | 0c5c949451f6f8f71e4489db19390ba6f931e2af (patch) | |
tree | df5aeaeaf0926a74239d66cb993f317af7f83842 /rcm-server-evdev.c | |
parent | 22f81fbe86e2920658948608ef9e87f8c1a03dc2 (diff) |
Add a device_free() function
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; +} + |