aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/net/secrets.el72
2 files changed, 41 insertions, 36 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 54e427eeda5..0deba1945da 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12010-03-16 Michael Albinus <michael.albinus@gmx.de>
2
3 * net/secrets.el (secrets-enabled): New variable. Use it instead
4 of a subfeature.
5
12010-03-15 Michael Albinus <michael.albinus@gmx.de> 62010-03-15 Michael Albinus <michael.albinus@gmx.de>
2 7
3 * net/secrets.el (top): Register the D-Bus signals only when the 8 * net/secrets.el (top): Register the D-Bus signals only when the
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 07062810b80..5fa10e284a4 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -34,11 +34,9 @@
34;; into your .emacs: 34;; into your .emacs:
35;; 35;;
36;; (require 'secrets) 36;; (require 'secrets)
37
38;; It can be checked afterwards, whether there is a daemon providing
39;; this interface:
40;; 37;;
41;; (featurep 'secrets 'enabled) 38;; Afterwards, the variable `secrets-enabled' is non-nil when there is
39;; a daemon providing this interface.
42 40
43;; The atomic objects to be managed by the Secret Service API are 41;; The atomic objects to be managed by the Secret Service API are
44;; secret items, which are something an application wishes to store 42;; secret items, which are something an application wishes to store
@@ -150,6 +148,9 @@
150 148
151(require 'dbus) 149(require 'dbus)
152 150
151(defvar secrets-enabled nil
152 "Whether there is a daemon offering the Secret Service API."
153
153(defvar secrets-debug t 154(defvar secrets-debug t
154 "Write debug messages") 155 "Write debug messages")
155 156
@@ -664,38 +665,37 @@ If there is no such item, or the item doesn't own this attribute, return nil."
664 :session secrets-service item-path 665 :session secrets-service item-path
665 secrets-interface-item "Delete"))))) 666 secrets-interface-item "Delete")))))
666 667
667(if (dbus-ping :session secrets-service 100) 668(when (dbus-ping :session secrets-service 100)
668 669
669 (progn 670 ;; We must reset all variables, when there is a new instance of the
670 ;; We must reset all variables, when there is a new instance of 671 ;; "org.freedesktop.secrets" service.
671 ;; the "org.freedesktop.secrets" service. 672 (dbus-register-signal
672 (dbus-register-signal 673 :session dbus-service-dbus dbus-path-dbus
673 :session dbus-service-dbus dbus-path-dbus 674 dbus-interface-dbus "NameOwnerChanged"
674 dbus-interface-dbus "NameOwnerChanged" 675 (lambda (&rest args)
675 (lambda (&rest args) 676 (when secrets-debug (message "Secret Service has changed: %S" args))
676 (when secrets-debug (message "Secret Service has changed: %S" args)) 677 (setq secrets-session-path secrets-empty-path
677 (setq secrets-session-path secrets-empty-path 678 secrets-prompt-signal nil
678 secrets-prompt-signal nil 679 secrets-collection-paths nil))
679 secrets-collection-paths nil)) 680 secrets-service)
680 secrets-service) 681
681 682 ;; We want to refresh our cache, when there is a change in
682 ;; We want to refresh our cache, when there is a change in 683 ;; collections.
683 ;; collections. 684 (dbus-register-signal
684 (dbus-register-signal 685 :session secrets-service secrets-path
685 :session secrets-service secrets-path 686 secrets-interface-service "CollectionCreated"
686 secrets-interface-service "CollectionCreated" 687 'secrets-collection-handler)
687 'secrets-collection-handler) 688
688 689 (dbus-register-signal
689 (dbus-register-signal 690 :session secrets-service secrets-path
690 :session secrets-service secrets-path 691 secrets-interface-service "CollectionDeleted"
691 secrets-interface-service "CollectionDeleted" 692 'secrets-collection-handler)
692 'secrets-collection-handler) 693
693 694 ;; We shall inform, whether the secret service is enabled on this
694 ;; We shall inform, whether the secret service is enabled on 695 ;; machine.
695 ;; this machine. 696 (setq secrets-enabled t)))
696 (provide 'secrets '(enabled))) 697
697 698(provide 'secrets)
698 (provide 'secrets))
699 699
700;;; TODO: 700;;; TODO:
701 701