summaryrefslogtreecommitdiff
path: root/src/dbusbind.c
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2020-09-06 20:45:29 +0200
committerMichael Albinus <michael.albinus@gmx.de>2020-09-06 20:45:29 +0200
commit9ba575aeb3a28a856f40675510c5ccfcd10ef665 (patch)
tree1d60e9d0ca21091be5ad61108860ad18700c1991 /src/dbusbind.c
parent3444f397c7d20ca59f7b18f6fe95aa79b33727e5 (diff)
downloademacs-9ba575aeb3a28a856f40675510c5ccfcd10ef665.tar.gz
emacs-9ba575aeb3a28a856f40675510c5ccfcd10ef665.tar.bz2
emacs-9ba575aeb3a28a856f40675510c5ccfcd10ef665.zip
More work on D-Bus error messages
* lisp/net/dbus.el (dbus-get-property): Adapt docstring. (dbus-set-property): Handle case of `:write' access type. (dbus-get-other-registered-properties): Rename from `dbus-get-other-registered-property'. (dbus-property-handler): Fix thinkos. * src/dbusbind.c (xd_read_message_1): Add error_name to event args in case of DBUS_MESSAGE_TYPE_ERROR. * test/lisp/net/dbus-tests.el (dbus--test-enabled-session-bus) (dbus--test-enabled-system-bus): Make them defconst. (dbus--test-service, dbus--test-path, dbus--test-interface): New defconst. Replace all occurences of `dbus-service-emacs' by `dbus--test-service'. (dbus--test-method-handler): New defun. (dbus-test04-register-method, dbus-test05-register-property): New tests.
Diffstat (limited to 'src/dbusbind.c')
-rw-r--r--src/dbusbind.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 4fce92521a4..b637c0e58aa 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -1508,7 +1508,7 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus)
int mtype;
dbus_uint32_t serial;
unsigned int ui_serial;
- const char *uname, *path, *interface, *member;
+ const char *uname, *path, *interface, *member, *error_name;
dmessage = dbus_connection_pop_message (connection);
@@ -1544,10 +1544,11 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus)
path = dbus_message_get_path (dmessage);
interface = dbus_message_get_interface (dmessage);
member = dbus_message_get_member (dmessage);
+ error_name =dbus_message_get_error_name (dmessage);
- XD_DEBUG_MESSAGE ("Event received: %s %u %s %s %s %s %s",
+ XD_DEBUG_MESSAGE ("Event received: %s %u %s %s %s %s %s %s",
XD_MESSAGE_TYPE_TO_STRING (mtype),
- ui_serial, uname, path, interface, member,
+ ui_serial, uname, path, interface, member, error_name,
XD_OBJECT_TO_STRING (args));
if (mtype == DBUS_MESSAGE_TYPE_INVALID)
@@ -1571,7 +1572,10 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus)
EVENT_INIT (event);
event.kind = DBUS_EVENT;
event.frame_or_window = Qnil;
- event.arg = Fcons (value, args);
+ event.arg =
+ Fcons (value,
+ (mtype == DBUS_MESSAGE_TYPE_ERROR)
+ ? (Fcons (build_string (error_name), args)) : args);
}
else /* DBUS_MESSAGE_TYPE_METHOD_CALL, DBUS_MESSAGE_TYPE_SIGNAL. */