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-lirc.c | |
parent | 22f81fbe86e2920658948608ef9e87f8c1a03dc2 (diff) |
Add a device_free() function
Diffstat (limited to 'rcm-server-lirc.c')
-rw-r--r-- | rcm-server-lirc.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/rcm-server-lirc.c b/rcm-server-lirc.c index e9a82a6..4342cc1 100644 --- a/rcm-server-lirc.c +++ b/rcm-server-lirc.c @@ -54,19 +54,11 @@ lirc_read(sd_event_source *s, int fd, uint32_t revents, void *userdata) return 0; } -void -lirc_close(struct device *device) -{ - if (device->lirc_fd < 0) - return; - - close(device->lirc_fd); - device->lirc_fd = -1; -} - int lirc_setup(struct device *device, const char *path) { + int r; + if (!device) return -EINVAL; @@ -85,10 +77,24 @@ lirc_setup(struct device *device, const char *path) device->lirc_fd, EPOLLIN, lirc_read, device) < 0) { printf("Failed to add event source for lirc device %s: %s\n", path, strerror(errno)); + r = -errno; lirc_close(device); - return -errno; + return r; } return 0; } +void +lirc_close(struct device *device) +{ + if (!device) + return; + + if (device->lirc_fd < 0) + return; + + close(device->lirc_fd); + device->lirc_fd = -1; +} + |