示例#1
0
bool
spl_remove_index(const char *utf8path, unsigned pos, GError **error_r)
{
    char *uri;

    GPtrArray *list = spl_load(utf8path, error_r);
    if (list == NULL)
        return false;

    if (pos >= list->len) {
        spl_free(list);
        g_set_error_literal(error_r, playlist_quark(),
                            PLAYLIST_RESULT_BAD_RANGE,
                            "Bad range");
        return false;
    }

    uri = spl_remove_index_internal(list, pos);
    g_free(uri);
    bool result = spl_save(list, utf8path, error_r);

    spl_free(list);

    idle_add(IDLE_STORED_PLAYLIST);
    return result;
}
示例#2
0
bool
spl_move_index(const char *utf8path, unsigned src, unsigned dest,
               GError **error_r)
{
    char *uri;

    if (src == dest)
        /* this doesn't check whether the playlist exists, but
           what the hell.. */
        return true;

    GPtrArray *list = spl_load(utf8path, error_r);
    if (list == NULL)
        return false;

    if (src >= list->len || dest >= list->len) {
        spl_free(list);
        g_set_error_literal(error_r, playlist_quark(),
                            PLAYLIST_RESULT_BAD_RANGE,
                            "Bad range");
        return false;
    }

    uri = spl_remove_index_internal(list, src);
    spl_insert_index_internal(list, dest, uri);

    bool result = spl_save(list, utf8path, error_r);

    spl_free(list);

    idle_add(IDLE_STORED_PLAYLIST);
    return result;
}
示例#3
0
enum playlist_result
spl_move_index(const char *utf8path, unsigned src, unsigned dest)
{
	GPtrArray *list;
	char *uri;
	enum playlist_result result;

	if (src == dest)
		/* this doesn't check whether the playlist exists, but
		   what the hell.. */
		return PLAYLIST_RESULT_SUCCESS;

	if (!(list = spl_load(utf8path)))
		return PLAYLIST_RESULT_NO_SUCH_LIST;

	if (src >= list->len || dest >= list->len) {
		spl_free(list);
		return PLAYLIST_RESULT_BAD_RANGE;
	}

	uri = spl_remove_index_internal(list, src);
	spl_insert_index_internal(list, dest, uri);

	result = spl_save(list, utf8path);

	spl_free(list);

	idle_add(IDLE_STORED_PLAYLIST);
	return result;
}
示例#4
0
enum playlist_result
spl_remove_index(const char *utf8path, unsigned pos)
{
	GPtrArray *list;
	char *uri;
	enum playlist_result result;

	if (!(list = spl_load(utf8path)))
		return PLAYLIST_RESULT_NO_SUCH_LIST;

	if (pos >= list->len) {
		spl_free(list);
		return PLAYLIST_RESULT_BAD_RANGE;
	}

	uri = spl_remove_index_internal(list, pos);
	g_free(uri);
	result = spl_save(list, utf8path);

	spl_free(list);

	idle_add(IDLE_STORED_PLAYLIST);
	return result;
}