dbus: Add dbus_error_from_errno

This commit is contained in:
Denis Kenzior 2018-07-02 11:33:49 -05:00
parent 7f844a2520
commit 31081f98e7
2 changed files with 38 additions and 0 deletions

View File

@ -26,6 +26,7 @@
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <ell/ell.h>
#include <ell/dbus-private.h>
@ -192,6 +193,40 @@ struct l_dbus_message *dbus_error_not_hidden(struct l_dbus_message *msg)
"Not hidden");
}
struct l_dbus_message *dbus_error_from_errno(int err,
struct l_dbus_message *msg)
{
switch (err) {
case -EBUSY:
return dbus_error_busy(msg);
case -ECANCELED:
return dbus_error_aborted(msg);
case -ERFKILL:
return dbus_error_not_available(msg);
case -EINVAL:
return dbus_error_invalid_args(msg);
case -EBADMSG:
return dbus_error_invalid_format(msg);
case -EEXIST:
return dbus_error_already_exists(msg);
case -ENOENT:
return dbus_error_not_found(msg);
case -ENOTSUP:
return dbus_error_not_supported(msg);
/* TODO: no_agent */
case -ENOKEY:
return dbus_error_not_configured(msg);
case -ENOTCONN:
return dbus_error_not_connected(msg);
case -ENOSYS:
return dbus_error_not_implemented(msg);
default:
break;
}
return dbus_error_failed(msg);
}
void dbus_pending_reply(struct l_dbus_message **msg,
struct l_dbus_message *reply)
{

View File

@ -74,6 +74,9 @@ struct l_dbus_message *dbus_error_already_provisioned(
struct l_dbus_message *msg);
struct l_dbus_message *dbus_error_not_hidden(struct l_dbus_message *msg);
struct l_dbus_message *dbus_error_from_errno(int err,
struct l_dbus_message *msg);
bool dbus_init(bool enable_debug);
bool dbus_exit(void);
void dbus_shutdown(void);