diff options
author | Peter Wu <lekensteyn@gmail.com> | 2013-08-22 23:19:27 +0200 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2013-09-02 11:45:34 +0200 |
commit | 1902da5f36bf039130f41c7a3eea85d021b30785 (patch) | |
tree | 3ad1e77cfd26e27db4bd9b36bc6cee0f6ddc444d | |
parent | ed501335778dada8bedd7cb2b6db3c227517d630 (diff) | |
download | upower-1902da5f36bf039130f41c7a3eea85d021b30785.tar.gz |
hidpp: more useful error messages
If read, wait or g_poll failed, it would return -1. This information is
not really useful, so print the error string instead where applicable.
Signed-off-by: Peter Wu <lekensteyn@gmail.com>
-rw-r--r-- | src/linux/hidpp-device.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/linux/hidpp-device.c b/src/linux/hidpp-device.c index 4e47d88..c0e7c4b 100644 --- a/src/linux/hidpp-device.c +++ b/src/linux/hidpp-device.c @@ -349,9 +349,15 @@ hidpp_device_cmd (HidppDevice *device, /* write to the device */ wrote = write (priv->fd, (const char *)request, msg_len); if ((gsize) wrote != msg_len) { - g_set_error (error, 1, 0, - "Unable to write request to device: %" G_GSIZE_FORMAT, - wrote); + if (wrote < 0) { + g_set_error (error, 1, 0, + "Failed to write HID++ request: %s", + g_strerror (errno)); + } else { + g_set_error (error, 1, 0, + "Could not fully write HID++ request, wrote %" G_GSIZE_FORMAT " bytes", + wrote); + } ret = FALSE; goto out; } @@ -361,10 +367,15 @@ hidpp_device_cmd (HidppDevice *device, remaining_time = HIDPP_DEVICE_READ_RESPONSE_TIMEOUT; for (;;) { wrote = g_poll (poll, G_N_ELEMENTS(poll), remaining_time); - if (wrote <= 0) { + if (wrote < 0) { + g_set_error (error, 1, 0, + "Failed to read from device: %s", + g_strerror (errno)); + ret = FALSE; + goto out; + } else if (wrote == 0) { g_set_error (error, 1, 0, - "Attempt to read response from device timed out: %" G_GSIZE_FORMAT, - wrote); + "Attempt to read response from device timed out"); ret = FALSE; goto out; } @@ -372,8 +383,8 @@ hidpp_device_cmd (HidppDevice *device, wrote = read (priv->fd, &read_msg, sizeof (*response)); if (wrote <= 0) { g_set_error (error, 1, 0, - "Unable to read response from device: %" G_GSIZE_FORMAT, - wrote); + "Unable to read response from device: %s", + g_strerror (errno)); ret = FALSE; goto out; } |