static DBusMessage *session_get_properties(DBusConnection *connection, DBusMessage *message, void *user_data) { struct obc_session *session = user_data; DBusMessage *reply; DBusMessageIter iter, dict; reply = dbus_message_new_method_return(message); if (!reply) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); if (session->source != NULL) obex_dbus_dict_append(&dict, "Source", DBUS_TYPE_STRING, &session->source); obex_dbus_dict_append(&dict, "Destination", DBUS_TYPE_STRING, &session->destination); obex_dbus_dict_append(&dict, "Channel", DBUS_TYPE_BYTE, &session->channel); dbus_message_iter_close_container(&iter, &dict); return reply; }
static void parse_attachment_size(struct map_msg *msg, const char *value, DBusMessageIter *iter) { msg->attachment_size = g_ascii_strtoll(value, NULL, 10); obex_dbus_dict_append(iter, "AttachmentSize", DBUS_TYPE_UINT64, &msg->attachment_size); }
static void parse_status(struct map_msg *msg, const char *value, DBusMessageIter *iter) { g_free(msg->status); msg->status = g_strdup(value); obex_dbus_dict_append(iter, "Status", DBUS_TYPE_STRING, &value); }
static void parse_recipient(struct map_msg *msg, const char *value, DBusMessageIter *iter) { g_free(msg->recipient); msg->recipient = g_strdup(value); obex_dbus_dict_append(iter, "Recipient", DBUS_TYPE_STRING, &value); }
static void parse_datetime(struct map_msg *msg, const char *value, DBusMessageIter *iter) { g_free(msg->timestamp); msg->timestamp = g_strdup(value); obex_dbus_dict_append(iter, "Timestamp", DBUS_TYPE_STRING, &value); }
static void parse_protected(struct map_msg *msg, const char *value, DBusMessageIter *iter) { gboolean flag = strcasecmp(value, "no") != 0; if (flag) msg->flags |= MAP_MSG_FLAG_PROTECTED; else msg->flags &= ~MAP_MSG_FLAG_PROTECTED; obex_dbus_dict_append(iter, "Protected", DBUS_TYPE_BOOLEAN, &flag); }
static void folder_element(GMarkupParseContext *ctxt, const char *element, const char **names, const char **values, gpointer user_data, GError **gerr) { DBusMessageIter dict, *iter = user_data; const char *key; gint i; if (strcasecmp("folder", element) != 0) return; dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); for (i = 0, key = names[i]; key; key = names[++i]) { if (strcasecmp("name", key) == 0) obex_dbus_dict_append(&dict, "Name", DBUS_TYPE_STRING, &values[i]); } dbus_message_iter_close_container(iter, &dict); }