From 0c5c949451f6f8f71e4489db19390ba6f931e2af Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Tue, 18 Apr 2017 22:18:17 +0200 Subject: Add a device_free() function --- rcm-server-evdev.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'rcm-server-evdev.c') 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; +} + -- cgit v1.2.3