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); }
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); }