diff --git a/input/device.c b/input/device.c
index 16eb155..a1ecdd7 100644
--- a/input/device.c
+++ b/input/device.c
if (fd < 0) {
fd = open("/dev/misc/uinput", O_RDWR);
if (fd < 0) {
- err = errno;
+ err = -errno;
error("Can't open input device: %s (%d)",
- strerror(err), err);
- return -err;
+ strerror(-err), -err);
+ return err;
}
}
}
dev.id.version = 0x0000;
if (write(fd, &dev, sizeof(dev)) < 0) {
- err = errno;
+ err = -errno;
error("Can't write device information: %s (%d)",
- strerror(err), err);
+ strerror(-err), -err);
close(fd);
- errno = err;
- return -err;
+ return err;
}
ioctl(fd, UI_SET_EVBIT, EV_KEY);
ioctl(fd, UI_SET_KEYBIT, KEY_PAGEDOWN);
if (ioctl(fd, UI_DEV_CREATE, NULL) < 0) {
- err = errno;
+ err = -errno;
error("Can't create uinput device: %s (%d)",
- strerror(err), err);
+ strerror(-err), -err);
close(fd);
- errno = err;
- return -err;
+ return err;
}
return fd;
*/
fake->uinput = uinput_create(idev->name);
if (fake->uinput < 0) {
+ int err = fake->uinput;
+
g_io_channel_shutdown(chan, TRUE, NULL);
reply = btd_error_failed(iconn->pending_connect,
- strerror(errno));
+ strerror(-err));
goto failed;
}
return -errno;
if (ioctl(ctl, HIDPCONNADD, req) < 0)
- err = errno;
+ err = -errno;
close(ctl);
- return -err;
+ return err;
}
static void encrypt_completed(uint8_t status, gpointer user_data)
struct fake_input *fake = iconn->fake;
struct hidp_conndel_req req;
struct hidp_conninfo ci;
- int ctl, err;
+ int ctl, err = 0;
/* Fake input disconnect */
if (fake) {
bacpy(&ci.bdaddr, &idev->dst);
if ((ioctl(ctl, HIDPGETCONNINFO, &ci) < 0) ||
(ci.state != BT_CONNECTED)) {
- errno = ENOTCONN;
+ err = -ENOTCONN;
goto fail;
}
bacpy(&req.bdaddr, &idev->dst);
req.flags = flags;
if (ioctl(ctl, HIDPCONNDEL, &req) < 0) {
+ err = -errno;
error("Can't delete the HID device: %s(%d)",
- strerror(errno), errno);
+ strerror(-err), -err);
goto fail;
}
- close(ctl);
-
- return 0;
-
fail:
- err = errno;
close(ctl);
- errno = err;
- return -err;
+ return err;
}
static int disconnect(struct input_device *idev, uint32_t flags)