Esempio n. 1
0
static gint
xmms_browse_list_sortfunc (xmmsv_t **a, xmmsv_t **b)
{
	xmmsv_t *val1, *val2;
	const gchar *s1, *s2;
	int r1, r2;

	g_return_val_if_fail (xmmsv_is_type (*a, XMMSV_TYPE_DICT), 0);
	g_return_val_if_fail (xmmsv_is_type (*b, XMMSV_TYPE_DICT), 0);

	r1 = xmmsv_dict_get (*a, "intsort", &val1);
	r2 = xmmsv_dict_get (*b, "intsort", &val2);

	if (r1 && r2) {
		gint i1, i2;

		if (!xmmsv_get_int (val1, &i1))
			return 0;
		if (!xmmsv_get_int (val2, &i2))
			return 0;
		return i1 > i2;
	}

	if (!xmmsv_dict_get (*a, "path", &val1))
		return 0;
	if (!xmmsv_dict_get (*b, "path", &val2))
		return 0;

	if (!xmmsv_get_string (val1, &s1))
		return 0;
	if (!xmmsv_get_string (val2, &s2))
		return 0;

	return xmms_natcmp (s1, s2);
}
Esempio n. 2
0
static gint
xmms_browse_list_sortfunc (gconstpointer a, gconstpointer b)
{
	int r1, r2;
	xmmsv_t *val1, *val2, *tmp1, *tmp2;
	const gchar *s1, *s2;

	val1 = (xmmsv_t *) a;
	val2 = (xmmsv_t *) b;

	g_return_val_if_fail (xmmsv_get_type (val1) == XMMSV_TYPE_DICT, 0);
	g_return_val_if_fail (xmmsv_get_type (val2) == XMMSV_TYPE_DICT, 0);

	r1 = xmmsv_dict_get (val1, "intsort", &tmp1);
	r2 = xmmsv_dict_get (val2, "intsort", &tmp2);

	if (r1 && r2) {
		gint i1, i2;

		if (!xmmsv_get_int (tmp1, &i1))
			return 0;
		if (!xmmsv_get_int (tmp2, &i2))
			return 0;
		return i1 > i2;
	}

	if (!xmmsv_dict_get (val1, "path", &tmp1))
		return 0;
	if (!xmmsv_dict_get (val2, "path", &tmp2))
		return 0;

	if (!xmmsv_get_string (tmp1, &s1))
		return 0;
	if (!xmmsv_get_string (tmp2, &s2))
		return 0;

	return xmms_natcmp (s1, s2);
}