static void cli_info_print (xmmsv_t *propdict) { xmmsv_t *properties, *sourcedict, *sources, *value; xmmsv_list_iter_t *pit, *sit; const gchar *source, *property; gint source_width; GString *sb; if (!xmmsv_propdict_lengths (propdict, NULL, &source_width)) { return; } sb = g_string_sized_new (source_width); xmmsv_dict_keys (propdict, &properties); xmmsv_list_sort (properties, xmmsv_strcmp); xmmsv_get_list_iter (properties, &pit); while (xmmsv_list_iter_entry_string (pit, &property)) { if (xmmsv_dict_get (propdict, property, &sourcedict)) { xmmsv_dict_keys (sourcedict, &sources); xmmsv_list_sort (sources, xmmsv_strcmp); xmmsv_get_list_iter (sources, &sit); while (xmmsv_list_iter_entry_string (sit, &source)) { if (xmmsv_dict_get (sourcedict, source, &value)) { cli_info_pad_source (sb, source_width, source); xmmsv_print_value (sb->str, property, value); } xmmsv_list_iter_next (sit); } } xmmsv_list_iter_next (pit); } g_string_free (sb, TRUE); }
xmmsv_t * xmms_xform_browse_method (xmms_xform_t *xform, const gchar *url, xmms_error_t *error) { xmmsv_t *list = NULL; if (xmms_xform_plugin_can_browse (xform->plugin)) { xform->browse_list = xmmsv_new_list (); if (!xmms_xform_plugin_browse (xform->plugin, xform, url, error)) { return NULL; } list = xform->browse_list; xform->browse_list = NULL; xmmsv_list_sort (list, xmms_browse_list_sortfunc); } else { xmms_error_set (error, XMMS_ERROR_GENERIC, "Couldn't handle that URL"); } return list; }