[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r113067: * net/secrets.el (secrets-struct-secret-con
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] trunk r113067: * net/secrets.el (secrets-struct-secret-content-type): Replace |
Date: |
Wed, 19 Jun 2013 06:24:18 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 113067
revision-id: address@hidden
parent: address@hidden
committer: Michael Albinus <address@hidden>
branch nick: trunk
timestamp: Wed 2013-06-19 08:24:12 +0200
message:
* net/secrets.el (secrets-struct-secret-content-type): Replace
check of introspection data by a test call of "CreateItem". Some
servers do not offer introspection.
modified:
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/net/secrets.el secrets.el-20100313201810-6s62gy70hbdnhfs1-1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-06-19 04:42:32 +0000
+++ b/lisp/ChangeLog 2013-06-19 06:24:12 +0000
@@ -1,3 +1,9 @@
+2013-06-19 Michael Albinus <address@hidden>
+
+ * net/secrets.el (secrets-struct-secret-content-type): Replace
+ check of introspection data by a test call of "CreateItem". Some
+ servers do not offer introspection.
+
2013-06-19 Stefan Monnier <address@hidden>
* electric.el (electric-pair-mode): Improve interaction with
=== modified file 'lisp/net/secrets.el'
--- a/lisp/net/secrets.el 2013-06-13 10:12:34 +0000
+++ b/lisp/net/secrets.el 2013-06-19 06:24:12 +0000
@@ -310,13 +310,42 @@
(defconst secrets-interface-item-type-generic "org.freedesktop.Secret.Generic"
"The default item type we are using.")
+;; We cannot use introspection, because some servers, like
+;; mate-keyring-daemon, don't provide relevant data. Once the dust
+;; has settled, we shall assume the new interface, and get rid of the test.
(defconst secrets-struct-secret-content-type
- (when (string-equal
- (dbus-introspect-get-signature
- :session secrets-service secrets-path secrets-interface-service
- "GetSecrets" "out")
- "a{o(oayays)}")
- '("text/plain"))
+ (ignore-errors
+ (let ((content-type "text/plain")
+ (path (cadr
+ (dbus-call-method
+ :session secrets-service secrets-path
+ secrets-interface-service
+ "OpenSession" "plain" '(:variant ""))))
+ result)
+ ;; Create a dummy item.
+ (setq result
+ (dbus-call-method
+ :session secrets-service secrets-session-collection-path
+ secrets-interface-collection "CreateItem"
+ ;; Properties.
+ `(:array
+ (:dict-entry ,(concat secrets-interface-item ".Label")
+ (:variant "dummy"))
+ (:dict-entry ,(concat secrets-interface-item ".Type")
+ (:variant ,secrets-interface-item-type-generic)))
+ ;; Secret.
+ `(:struct :object-path ,path
+ (:array :signature "y")
+ ,(dbus-string-to-byte-array " ")
+ :string ,content-type)
+ ;; Don't replace.
+ nil))
+ ;; Remove it.
+ (dbus-call-method
+ :session secrets-service (car result)
+ secrets-interface-item "Delete")
+ ;; Result.
+ `(,content-type)))
"The content_type of a secret struct.
It must be wrapped as list, because we add it via `append'. This
is an interface introduced in 2011.")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r113067: * net/secrets.el (secrets-struct-secret-content-type): Replace,
Michael Albinus <=