static gint
sort_users (GtkTreeModel *model,
            GtkTreeIter  *a,
            GtkTreeIter  *b,
            gpointer      data)
{
    UmUser *ua, *ub;
    gint sa, sb;
    gint result;

    gtk_tree_model_get (model, a, USER_COL, &ua, SORT_KEY_COL, &sa, -1);
    gtk_tree_model_get (model, b, USER_COL, &ub, SORT_KEY_COL, &sb, -1);

    if (sa < sb) {
        result = -1;
    }
    else if (sa > sb) {
        result = 1;
    }
    else {
        result = um_user_collate (ua, ub);
    }

    if (ua) {
        g_object_unref (ua);
    }
    if (ub) {
        g_object_unref (ub);
    }

    return result;
}
static gint
sort_login_users (GtkTreeModel *model,
                  GtkTreeIter  *a,
                  GtkTreeIter  *b,
                  gpointer      data)
{
        UmUser *ua, *ub;
        gint result;

        gtk_tree_model_get (model, a, AUTOLOGIN_USER_COL, &ua, -1);
        gtk_tree_model_get (model, b, AUTOLOGIN_USER_COL, &ub, -1);

        if (ua == NULL)
                result = -1;
        else if (ub == NULL)
                result = 1;
        else if (um_user_get_uid (ua) == getuid ())
                result = -1;
        else if (um_user_get_uid (ub) == getuid ())
                result = 1;
        else
                result = um_user_collate (ua, ub);

        if (ua)
                g_object_unref (ua);

        if (ub)
                g_object_unref (ub);

        return result;
}