diff options
| author | Michael Albinus | 2008-08-01 18:41:05 +0000 |
|---|---|---|
| committer | Michael Albinus | 2008-08-01 18:41:05 +0000 |
| commit | ba0b66b030088a3fd53172006bbbe67828db8172 (patch) | |
| tree | 98e9fc5b639ae89493fa262426ce90344a8af759 | |
| parent | 367ea1732aaf87414718e7e1ed23916956f0fa4c (diff) | |
| download | emacs-ba0b66b030088a3fd53172006bbbe67828db8172.tar.gz emacs-ba0b66b030088a3fd53172006bbbe67828db8172.zip | |
* net/dbus.el (dbus-check-event, dbus-handle-event): Handle D-Bus
error messages.
(dbus-set-property): Call `dbus-introspect-get-property' instead
of `dbus-get-property'.
| -rw-r--r-- | lisp/net/dbus.el | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el index 3cba1c3a630..3f4eb27cabd 100644 --- a/lisp/net/dbus.el +++ b/lisp/net/dbus.el | |||
| @@ -266,15 +266,19 @@ not well formed." | |||
| 266 | (natnump (nth 3 event)) | 266 | (natnump (nth 3 event)) |
| 267 | ;; Service. | 267 | ;; Service. |
| 268 | (or (= dbus-message-type-method-return (nth 2 event)) | 268 | (or (= dbus-message-type-method-return (nth 2 event)) |
| 269 | (= dbus-message-type-error (nth 2 event)) | ||
| 269 | (stringp (nth 4 event))) | 270 | (stringp (nth 4 event))) |
| 270 | ;; Object path. | 271 | ;; Object path. |
| 271 | (or (= dbus-message-type-method-return (nth 2 event)) | 272 | (or (= dbus-message-type-method-return (nth 2 event)) |
| 273 | (= dbus-message-type-error (nth 2 event)) | ||
| 272 | (stringp (nth 5 event))) | 274 | (stringp (nth 5 event))) |
| 273 | ;; Interface. | 275 | ;; Interface. |
| 274 | (or (= dbus-message-type-method-return (nth 2 event)) | 276 | (or (= dbus-message-type-method-return (nth 2 event)) |
| 277 | (= dbus-message-type-error (nth 2 event)) | ||
| 275 | (stringp (nth 6 event))) | 278 | (stringp (nth 6 event))) |
| 276 | ;; Member. | 279 | ;; Member. |
| 277 | (or (= dbus-message-type-method-return (nth 2 event)) | 280 | (or (= dbus-message-type-method-return (nth 2 event)) |
| 281 | (= dbus-message-type-error (nth 2 event)) | ||
| 278 | (stringp (nth 7 event))) | 282 | (stringp (nth 7 event))) |
| 279 | ;; Handler. | 283 | ;; Handler. |
| 280 | (functionp (nth 8 event))) | 284 | (functionp (nth 8 event))) |
| @@ -287,11 +291,14 @@ EVENT is a D-Bus event, see `dbus-check-event'. HANDLER, being | |||
| 287 | part of the event, is called with arguments ARGS. | 291 | part of the event, is called with arguments ARGS. |
| 288 | If the HANDLER returns an `dbus-error', it is propagated as return message." | 292 | If the HANDLER returns an `dbus-error', it is propagated as return message." |
| 289 | (interactive "e") | 293 | (interactive "e") |
| 290 | ;; By default, we don't want to raise an error, because this | ||
| 291 | ;; function is called in the event handling loop. | ||
| 292 | (condition-case err | 294 | (condition-case err |
| 293 | (let (result) | 295 | (let (result) |
| 296 | ;; We ignore not well-formed events. | ||
| 294 | (dbus-check-event event) | 297 | (dbus-check-event event) |
| 298 | ;; Error messages must be propagated. | ||
| 299 | (when (= dbus-message-type-error (nth 2 event)) | ||
| 300 | (signal 'dbus-error (nthcdr 9 event))) | ||
| 301 | ;; Apply the handler. | ||
| 295 | (setq result (apply (nth 8 event) (nthcdr 9 event))) | 302 | (setq result (apply (nth 8 event) (nthcdr 9 event))) |
| 296 | ;; Return a message when it is a message call. | 303 | ;; Return a message when it is a message call. |
| 297 | (when (= dbus-message-type-method-call (nth 2 event)) | 304 | (when (= dbus-message-type-method-call (nth 2 event)) |
| @@ -305,8 +312,9 @@ If the HANDLER returns an `dbus-error', it is propagated as return message." | |||
| 305 | (dbus-ignore-errors | 312 | (dbus-ignore-errors |
| 306 | (dbus-method-error-internal | 313 | (dbus-method-error-internal |
| 307 | (nth 1 event) (nth 3 event) (nth 4 event) (cadr err)))) | 314 | (nth 1 event) (nth 3 event) (nth 4 event) (cadr err)))) |
| 308 | ;; Propagate D-Bus error in the debug case. | 315 | ;; Propagate D-Bus error messages. |
| 309 | (when dbus-debug (signal (car err) (cdr err)))))) | 316 | (when (or dbus-debug (= dbus-message-type-error (nth 2 event))) |
| 317 | (signal (car err) (cdr err)))))) | ||
| 310 | 318 | ||
| 311 | (defun dbus-event-bus-name (event) | 319 | (defun dbus-event-bus-name (event) |
| 312 | "Return the bus name the event is coming from. | 320 | "Return the bus name the event is coming from. |
| @@ -724,7 +732,7 @@ returned." | |||
| 724 | (string-equal | 732 | (string-equal |
| 725 | "readwrite" | 733 | "readwrite" |
| 726 | (dbus-introspect-get-attribute | 734 | (dbus-introspect-get-attribute |
| 727 | (dbus-get-property bus service path interface property) | 735 | (dbus-introspect-get-property bus service path interface property) |
| 728 | "access"))) | 736 | "access"))) |
| 729 | ;; "Set" requires a variant. | 737 | ;; "Set" requires a variant. |
| 730 | (dbus-call-method | 738 | (dbus-call-method |