diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2020-09-06 20:45:29 +0200 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2020-09-06 20:45:29 +0200 |
commit | 9ba575aeb3a28a856f40675510c5ccfcd10ef665 (patch) | |
tree | 1d60e9d0ca21091be5ad61108860ad18700c1991 /src/dbusbind.c | |
parent | 3444f397c7d20ca59f7b18f6fe95aa79b33727e5 (diff) | |
download | emacs-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.c | 12 |
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. */ |