summaryrefslogtreecommitdiff
path: root/lisp/net/dbus.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2013-12-04 15:10:09 +0100
committerMichael Albinus <michael.albinus@gmx.de>2013-12-04 15:10:09 +0100
commit81961e4cea57cd7b57b263ed0a570737c24d6f97 (patch)
tree885e47c2a47922e8047157be8d60756dd1cb95ca /lisp/net/dbus.el
parenta84c99500e38d6e396b911aee69b1d58acdfa488 (diff)
downloademacs-81961e4cea57cd7b57b263ed0a570737c24d6f97.tar.gz
* net/dbus.el (dbus-byte-array-to-string): Accept also byte arrays
in D-Bus type syntax. (dbus-unescape-from-identifier): Use `byte-to-string' in order to preserve unibyte strings. (Bug#16048)
Diffstat (limited to 'lisp/net/dbus.el')
-rw-r--r--lisp/net/dbus.el13
1 files changed, 10 insertions, 3 deletions
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index a05452c430c..db444ae199f 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -829,8 +829,15 @@ STRING shall be UTF8 coded."
(defun dbus-byte-array-to-string (byte-array)
"Transforms BYTE-ARRAY into UTF8 coded string.
-BYTE-ARRAY must be a list of structure (c1 c2 ...)."
- (apply 'string byte-array))
+BYTE-ARRAY must be a list of structure (c1 c2 ...), or a byte
+array as produced by `dbus-string-to-byte-array'."
+ (apply
+ 'string
+ (if (equal byte-array '(:array :signature "y"))
+ nil
+ (let (result)
+ (dolist (elt byte-array result)
+ (when (characterp elt) (setq result (append result `(,elt)))))))))
(defun dbus-escape-as-identifier (string)
"Escape an arbitrary STRING so it follows the rules for a C identifier.
@@ -863,7 +870,7 @@ STRING must have been coded with `dbus-escape-as-identifier'"
""
(replace-regexp-in-string
"_.."
- (lambda (x) (format "%c" (string-to-number (substring x 1) 16)))
+ (lambda (x) (byte-to-string (string-to-number (substring x 1) 16)))
string)))