* net/dbus.el (dbus-byte-array-to-string): Accept also byte arrays
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 4 Dec 2013 14:10:09 +0000 (15:10 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 4 Dec 2013 14:10:09 +0000 (15:10 +0100)
in D-Bus type syntax.
(dbus-unescape-from-identifier): Use `byte-to-string' in order to
preserve unibyte strings.  (Bug#16048)

lisp/ChangeLog
lisp/net/dbus.el

index 18b404f..9ead2f9 100644 (file)
@@ -1,3 +1,10 @@
+2013-12-04  Michael Albinus  <michael.albinus@gmx.de>
+
+       * 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)
+
 2013-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/eldoc.el (eldoc-minibuffer-message):
@@ -21,7 +28,7 @@
 2013-12-03  Tom Regner <tom@goochesa.de>  (tiny change)
 
        * notifications.el (notifications-close-notification): Call the
-       D-Bus method with `id' being an `:uint32'.  (Bug#16030)
+       D-Bus method with ID being a `:uint32'.  (Bug#16030)
 
 2013-12-03  Katsumi Yamaoka  <yamaoka@jpl.org>
 
index a05452c..db444ae 100644 (file)
@@ -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)))
 
 \f