summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <lekensteyn@gmail.com>2013-08-22 23:19:27 +0200
committerPeter Wu <lekensteyn@gmail.com>2013-09-02 11:45:34 +0200
commit1902da5f36bf039130f41c7a3eea85d021b30785 (patch)
tree3ad1e77cfd26e27db4bd9b36bc6cee0f6ddc444d
parented501335778dada8bedd7cb2b6db3c227517d630 (diff)
downloadupower-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.c27
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;
}