void g_mount_spec_to_dbus_with_path (DBusMessageIter *iter, GMountSpec *spec, const char *path) { DBusMessageIter spec_iter, array_iter, item_iter; int i; if (!dbus_message_iter_open_container (iter, DBUS_TYPE_STRUCT, NULL, &spec_iter)) _g_dbus_oom (); _g_dbus_message_iter_append_cstring (&spec_iter, path ? path : ""); if (!dbus_message_iter_open_container (&spec_iter, DBUS_TYPE_ARRAY, G_MOUNT_SPEC_ITEM_TYPE_AS_STRING, &array_iter)) _g_dbus_oom (); for (i = 0; i < spec->items->len; i++) { GMountSpecItem *item = &g_array_index (spec->items, GMountSpecItem, i); if (!dbus_message_iter_open_container (&array_iter, DBUS_TYPE_STRUCT, NULL, &item_iter)) _g_dbus_oom (); if (!dbus_message_iter_append_basic (&item_iter, DBUS_TYPE_STRING, &item->key)) _g_dbus_oom (); _g_dbus_message_iter_append_cstring (&item_iter, item->value); if (!dbus_message_iter_close_container (&array_iter, &item_iter)) _g_dbus_oom (); } if (!dbus_message_iter_close_container (&spec_iter, &array_iter)) _g_dbus_oom (); if (!dbus_message_iter_close_container (iter, &spec_iter)) _g_dbus_oom (); }
static void send_spawned (DBusConnection *connection, gboolean succeeded, char *error_message) { DBusMessage *message; dbus_bool_t dbus_succeeded; if (error_message == NULL) error_message = ""; if (spawner_id == NULL || spawner_path == NULL) { if (!succeeded) { g_printerr (_("Error: %s"), error_message); g_printerr ("\n"); } return; } message = dbus_message_new_method_call (spawner_id, spawner_path, G_VFS_DBUS_SPAWNER_INTERFACE, G_VFS_DBUS_OP_SPAWNED); dbus_message_set_no_reply (message, TRUE); dbus_succeeded = succeeded; if (!dbus_message_append_args (message, DBUS_TYPE_BOOLEAN, &dbus_succeeded, DBUS_TYPE_STRING, &error_message, DBUS_TYPE_INVALID)) _g_dbus_oom (); dbus_connection_send (connection, message, NULL); /* Make sure the message is sent */ dbus_connection_flush (connection); }