diff options
| author | Michael Albinus | 2020-09-06 20:45:29 +0200 |
|---|---|---|
| committer | Michael Albinus | 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.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) | |||
| 1508 | int mtype; | 1508 | int mtype; |
| 1509 | dbus_uint32_t serial; | 1509 | dbus_uint32_t serial; |
| 1510 | unsigned int ui_serial; | 1510 | unsigned int ui_serial; |
| 1511 | const char *uname, *path, *interface, *member; | 1511 | const char *uname, *path, *interface, *member, *error_name; |
| 1512 | 1512 | ||
| 1513 | dmessage = dbus_connection_pop_message (connection); | 1513 | dmessage = dbus_connection_pop_message (connection); |
| 1514 | 1514 | ||
| @@ -1544,10 +1544,11 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus) | |||
| 1544 | path = dbus_message_get_path (dmessage); | 1544 | path = dbus_message_get_path (dmessage); |
| 1545 | interface = dbus_message_get_interface (dmessage); | 1545 | interface = dbus_message_get_interface (dmessage); |
| 1546 | member = dbus_message_get_member (dmessage); | 1546 | member = dbus_message_get_member (dmessage); |
| 1547 | error_name =dbus_message_get_error_name (dmessage); | ||
| 1547 | 1548 | ||
| 1548 | XD_DEBUG_MESSAGE ("Event received: %s %u %s %s %s %s %s", | 1549 | XD_DEBUG_MESSAGE ("Event received: %s %u %s %s %s %s %s %s", |
| 1549 | XD_MESSAGE_TYPE_TO_STRING (mtype), | 1550 | XD_MESSAGE_TYPE_TO_STRING (mtype), |
| 1550 | ui_serial, uname, path, interface, member, | 1551 | ui_serial, uname, path, interface, member, error_name, |
| 1551 | XD_OBJECT_TO_STRING (args)); | 1552 | XD_OBJECT_TO_STRING (args)); |
| 1552 | 1553 | ||
| 1553 | if (mtype == DBUS_MESSAGE_TYPE_INVALID) | 1554 | if (mtype == DBUS_MESSAGE_TYPE_INVALID) |
| @@ -1571,7 +1572,10 @@ xd_read_message_1 (DBusConnection *connection, Lisp_Object bus) | |||
| 1571 | EVENT_INIT (event); | 1572 | EVENT_INIT (event); |
| 1572 | event.kind = DBUS_EVENT; | 1573 | event.kind = DBUS_EVENT; |
| 1573 | event.frame_or_window = Qnil; | 1574 | event.frame_or_window = Qnil; |
| 1574 | event.arg = Fcons (value, args); | 1575 | event.arg = |
| 1576 | Fcons (value, | ||
| 1577 | (mtype == DBUS_MESSAGE_TYPE_ERROR) | ||
| 1578 | ? (Fcons (build_string (error_name), args)) : args); | ||
| 1575 | } | 1579 | } |
| 1576 | 1580 | ||
| 1577 | else /* DBUS_MESSAGE_TYPE_METHOD_CALL, DBUS_MESSAGE_TYPE_SIGNAL. */ | 1581 | else /* DBUS_MESSAGE_TYPE_METHOD_CALL, DBUS_MESSAGE_TYPE_SIGNAL. */ |