Warn if D-Bus error "InteractiveAuthorizationRequired" occurs
* lisp/net/dbus.el (dbus-error-interactive-authorization-required): New defconst. (dbus-warn-interactive-authorization-required): New defun. (dbus-event-error-functions): Add it.
This commit is contained in:
parent
df26519500
commit
acfc3884bf
1 changed files with 19 additions and 1 deletions
|
@ -192,6 +192,10 @@ See /usr/include/dbus-1.0/dbus/dbus-protocol.h.")
|
|||
(defconst dbus-error-failed (concat dbus-error-dbus ".Failed")
|
||||
"A generic error; \"something went wrong\" - see the error message for more.")
|
||||
|
||||
(defconst dbus-error-interactive-authorization-required
|
||||
(concat dbus-error-dbus ".InteractiveAuthorizationRequired")
|
||||
"Interactive authentication required.")
|
||||
|
||||
(defconst dbus-error-invalid-args (concat dbus-error-dbus ".InvalidArgs")
|
||||
"Invalid arguments passed to a method call.")
|
||||
|
||||
|
@ -243,7 +247,9 @@ Otherwise, return result of last form in BODY, or all other errors."
|
|||
(progn ,@body)
|
||||
(dbus-error (when dbus-debug (signal (car err) (cdr err))))))
|
||||
|
||||
(defvar dbus-event-error-functions '(dbus-notice-synchronous-call-errors)
|
||||
(defvar dbus-event-error-functions
|
||||
'(dbus-notice-synchronous-call-errors
|
||||
dbus-warn-interactive-authorization-required)
|
||||
"Functions to be called when a D-Bus error happens in the event handler.
|
||||
Every function must accept two arguments, the event and the error variable
|
||||
caught in `condition-case' by `dbus-error'.")
|
||||
|
@ -282,6 +288,18 @@ The result will be made available in `dbus-return-values-table'."
|
|||
(setcar result :error)
|
||||
(setcdr result er))))
|
||||
|
||||
(defun dbus-warn-interactive-authorization-required (ev er)
|
||||
"Detect `dbus-error-interactive-authorization-required'."
|
||||
(when (string-equal (cadr er) dbus-error-interactive-authorization-required)
|
||||
(lwarn 'dbus :warning "%S" (cdr er))
|
||||
(let* ((key (list :serial
|
||||
(dbus-event-bus-name ev)
|
||||
(dbus-event-serial-number ev)))
|
||||
(result (gethash key dbus-return-values-table)))
|
||||
(when (consp result)
|
||||
(setcar result :complete)
|
||||
(setcdr result nil)))))
|
||||
|
||||
(defun dbus-call-method (bus service path interface method &rest args)
|
||||
"Call METHOD on the D-Bus BUS.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue