changeset 87093:6cb7edfb2f4e

* net/dbus.el (dbus-hash-table=): Allow nil as wildcard in the interface and member fields.
author Michael Albinus <michael.albinus@gmx.de>
date Wed, 05 Dec 2007 21:59:12 +0000
parents 1ddad0de60e5
children 9ddfcd9ca5e3
files lisp/ChangeLog lisp/net/dbus.el
diffstat 2 files changed, 19 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Dec 05 21:53:40 2007 +0000
+++ b/lisp/ChangeLog	Wed Dec 05 21:59:12 2007 +0000
@@ -1,3 +1,8 @@
+2007-12-05  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/dbus.el (dbus-hash-table=): Allow nil as wildcard in the
+	interface and member fields.
+
 2007-12-05  Glenn Morris  <rgm@gnu.org>
 
 	* eshell/em-alias.el (pcomplete-stub): Define for compiler.
--- a/lisp/net/dbus.el	Wed Dec 05 21:53:40 2007 +0000
+++ b/lisp/net/dbus.el	Wed Dec 05 21:59:12 2007 +0000
@@ -55,15 +55,24 @@
   (and
    (listp x) (listp y)
    ;; Bus symbol, either :system or :session.
-   (symbolp (car x)) (symbolp (car y)) (equal  (car x) (car y))
+   (symbolp (car x)) (symbolp (car y)) (equal (car x) (car y))
    ;; Interface.
-   (stringp (cadr x)) (stringp (cadr y)) (string-equal  (cadr x) (cadr y))
+   (or
+    (null (cadr x)) (null (cadr y)) ; wildcard
+    (and
+     (stringp (cadr x)) (stringp (cadr y)) (string-equal (cadr x) (cadr y))))
    ;; Member.
-   (stringp (caddr x)) (stringp (caddr y)) (string-equal  (caddr x) (caddr y))))
+   (or
+    (null (caddr x)) (null (caddr y)) ; wildcard
+    (and
+     (stringp (caddr x)) (stringp (caddr y))
+     (string-equal (caddr x) (caddr y))))))
 
-(define-hash-table-test 'dbus-hash-table-test
-  'dbus-hash-table= 'sxhash)
+(define-hash-table-test 'dbus-hash-table-test 'dbus-hash-table= 'sxhash)
 
+;; When we assume that interface and and member are always strings in
+;; the key, we could use `equal' as test function.  But we want to
+;; have also `nil' there, being a wildcard.
 (setq dbus-registered-functions-table
       (make-hash-table :test 'dbus-hash-table-test))