diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2013-12-04 15:10:09 +0100 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2013-12-04 15:10:09 +0100 |
commit | 81961e4cea57cd7b57b263ed0a570737c24d6f97 (patch) | |
tree | 885e47c2a47922e8047157be8d60756dd1cb95ca /lisp/net/dbus.el | |
parent | a84c99500e38d6e396b911aee69b1d58acdfa488 (diff) | |
download | emacs-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.el | 13 |
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))) |