aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2008-08-01 18:41:05 +0000
committerMichael Albinus2008-08-01 18:41:05 +0000
commitba0b66b030088a3fd53172006bbbe67828db8172 (patch)
tree98e9fc5b639ae89493fa262426ce90344a8af759
parent367ea1732aaf87414718e7e1ed23916956f0fa4c (diff)
downloademacs-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.el18
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
287part of the event, is called with arguments ARGS. 291part of the event, is called with arguments ARGS.
288If the HANDLER returns an `dbus-error', it is propagated as return message." 292If 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