struct kdbus_cmd_recv recv;
struct kdbus_msg *msg;
gboolean can_receive;
- gint ret;
+ gint ret = 0;
can_receive = TRUE;
memset (&recv, 0, sizeof recv);
again:
ret = ioctl (worker->fd, KDBUS_CMD_RECV, &recv);
+ if (ret < 0)
+ ret = errno;
if (recv.return_flags & KDBUS_RECV_RETURN_DROPPED_MSGS)
g_warning ("kdbus: %lld dropped broadcast messages", recv.dropped_msgs);
- if (ret < 0)
+ if (ret != 0)
{
- if (errno == EINTR)
+ if (ret == EINTR)
goto again;
- if (errno == EAGAIN)
+ if (ret == EAGAIN)
return;
g_set_error (error, G_IO_ERROR,
- g_io_error_from_errno (errno),
+ g_io_error_from_errno (ret),
_("Error while receiving message: %s"),
- g_strerror (errno));
+ g_strerror (ret));
return;
}
}
}
parts[1] = g_variant_builder_end (&builder);
+ if (parts[1] == NULL)
+ g_warning ("failed to make builder");
body = g_dbus_message_get_body (message);
if (!body)
*/
if (ioctl(worker->fd, KDBUS_CMD_SEND, send))
{
+ int ret = errno;
gchar *info;
asprintf (&info, "sender=%s destination=%s path=%s interface=%s member=%s type=%d",
g_dbus_message_get_sender (message),
g_dbus_message_get_member (message),
g_dbus_message_get_message_type (message));
+ errno = ret;
if (errno == ENXIO || errno == ESRCH)
{
g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_SERVICE_UNKNOWN,
}
else
{
- g_warning ("kdbus: %s, %s", g_strerror(errno), info);
g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "%s, %s", g_strerror(errno), info);
+ g_warning ("kdbus: %s, %s", g_strerror(errno), info);
}
result = FALSE;
free(info);