*
* D-Bus helper library
*
- * Copyright (C) 2004-2008 Marcel Holtmann <marcel@holtmann.org>
+ * Copyright (C) 2004-2009 Marcel Holtmann <marcel@holtmann.org>
*
*
* This program is free software; you can redistribute it and/or modify
for (i = 0; sig[i]; i++) {
char type[32];
- int len, struct_level, dict_level;
+ int struct_level, dict_level;
+ unsigned int len;
gboolean complete;
complete = FALSE;
{
GSList *list;
+ if (!name)
+ return NULL;
+
for (list = interfaces; list; list = list->next) {
struct interface_data *iface = list->data;
if (!strcmp(name, iface->name))
}
iface = find_interface(data->interfaces, interface);
-
if (!iface) {
error("dbus_connection_emit_signal: %s does not implement %s",
path, interface);
struct generic_data *data = NULL;
struct interface_data *iface;
+ if (!path)
+ return FALSE;
+
if (dbus_connection_get_object_path_data(connection, path,
(void *) &data) == FALSE)
return FALSE;
DBusMessage *g_dbus_create_error_valist(DBusMessage *message, const char *name,
const char *format, va_list args)
{
- return dbus_message_new_error(message, name, format);
+ char str[1024];
+
+ vsnprintf(str, sizeof(str), format, args);
+
+ return dbus_message_new_error(message, name, str);
}
DBusMessage *g_dbus_create_error(DBusMessage *message, const char *name,
{
dbus_bool_t result;
+ if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL)
+ dbus_message_set_no_reply(message, TRUE);
+
result = dbus_connection_send(connection, message, NULL);
dbus_message_unref(message);
const char *path, const char *interface,
const char *name, int type, ...)
{
- va_list args;
+ va_list args;
gboolean result;
- va_start(args, type);
+ va_start(args, type);
result = emit_signal_valist(connection, path, interface,
name, type, args);
- va_end(args);
+ va_end(args);
- return result;
+ return result;
}
gboolean g_dbus_emit_signal_valist(DBusConnection *connection,