from __future__ import with_statement
import dbus, os
+from fnmatch import fnmatch
from dbuscron.logger import Logger
log = Logger(__name__)
return ','.join(rule)
def match(self, bus, message):
-
if self._bus not in (None, bus):
return False
for i, arg in enumerate(args_):
if i >= len(self._args):
break
- if self._args[i] not in (None, dbus_to_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
skip_args += 1
opts['args'] = ';'*skip_args + opts['args']
- if opts['args'] != '*' \
- and '*' in opts['args']:
- print >> sys.stderr, 'Warning: %s:%d: arguments contain wildcard characters, unsupported by dbuscron.' % (fnam, lineno)
-
# bus type sender interface path member destination args command
res = 'S signal,method_call %(src)s %(iface)s * %(meth)s %(dest)s %(args)s !%(cmd)s' % opts
print >> o, res