class Command(object):
def __init__(self, cmd):
self.__value = cmd
+ self.__auto_args = False
if self.is_shell_cmd:
self.__file = os.environ.get('SHELL', '/bin/sh')
self.__args = [self.__file, '-c', self.__value]
and self.__file.startswith('!'):
self.__file = self.__file.lstrip('!')
self.__auto_args = True
- else:
- self.__auto_args = False
def __call__(self, bus, message, environ):
args_list = map(dbus_to_str, message.get_args_list())
dbus_env = dict(
(('DBUS_ARG%d' % i, a) for i, a in enumerate(args_list)),
DBUS_ARGN = str(len(args_list)),
- DBUS_SENDER = str(message.get_sender()),
- DBUS_DEST = str(message.get_destination()),
- DBUS_IFACE = str(message.get_interface()),
- DBUS_PATH = str(message.get_path()),
- DBUS_MEMBER = str(message.get_member()),
+ DBUS_SENDER = str(message.get_sender() or ''),
+ DBUS_DEST = str(message.get_destination() or ''),
+ DBUS_IFACE = str(message.get_interface() or ''),
+ DBUS_PATH = str(message.get_path() or ''),
+ DBUS_MEMBER = str(message.get_member() or ''),
DBUS_BUS = bus.__class__.__name__.lower()[0:-3],
- # TODO
- #DBUS_ERROR = str(message.get_error_name()),
+ DBUS_ERROR = str(message.get_error_name() or ''),
DBUS_TYPE = get_dbus_message_type(message)
)
env.update(dbus_env)
args_list[0:0] = [
dbus_env['DBUS_IFACE'],
dbus_env['DBUS_MEMBER']]
- # TODO
- #elif dbus_env['DBUS_TYPE'] == 'error':
- # args_list.insert(0, dbus_env['DBUS_ERROR'])
+ elif dbus_env['DBUS_TYPE'] == 'error':
+ args_list.insert(0, dbus_env['DBUS_ERROR'])
args_list[0:0] = [
self.__file,