changelog format fix
[dbuscron] / dbuscron / bus.py
index 6a0c3a9..0514618 100644 (file)
@@ -1,13 +1,16 @@
 from __future__ import with_statement
 
 import dbus, os
+from fnmatch import fnmatch
 
 from dbuscron.logger import Logger
 log = Logger(__name__)
 
 def dbus_to_str(value):
     try:
-        if isinstance(value, dbus.Byte):
+        if value is None:
+            return ''
+        elif isinstance(value, dbus.Byte):
             result = str(int(value))
         elif isinstance(value, dbus.ByteArray):
             result = ','.join(str(ord(v)) for v in value)
@@ -124,7 +127,6 @@ class DbusRule(object):
         return ','.join(rule)
 
     def match(self, bus, message):
-
         if self._bus not in (None, bus):
             return False
 
@@ -153,8 +155,10 @@ class DbusRule(object):
             for i, arg in enumerate(args_):
                 if i >= len(self._args):
                     break
-                if self._args[i] not in (None, str(arg)):
-                    return False
+                a = dbus_to_str(arg)
+                if self._args[i] not in (None, a):
+                    if not fnmatch(a, self._args[i]):
+                        return False
 
         return True