Beispiel #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;
}
Beispiel #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;
}
Beispiel #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;
}
enum playlist_result
playlist_load_spl(struct playlist *playlist, const char *name_utf8)
{
	GPtrArray *list;

	list = spl_load(name_utf8);
	if (list == NULL)
		return PLAYLIST_RESULT_NO_SUCH_LIST;

	for (unsigned i = 0; i < list->len; ++i) {
		const char *temp = g_ptr_array_index(list, i);
		if ((playlist_append_uri(playlist, temp, NULL)) != PLAYLIST_RESULT_SUCCESS) {
			/* for windows compatibility, convert slashes */
			char *temp2 = g_strdup(temp);
			char *p = temp2;
			while (*p) {
				if (*p == '\\')
					*p = '/';
				p++;
			}
			if ((playlist_append_uri(playlist, temp, NULL)) != PLAYLIST_RESULT_SUCCESS) {
				g_warning("can't add file \"%s\"", temp2);
			}
			g_free(temp2);
		}
	}

	spl_free(list);
	return PLAYLIST_RESULT_SUCCESS;
}
Beispiel #5
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;
}