Exemple #1
0
void
filelist_move(struct filelist *filelist, struct filelist *from)
{
	guint i;

	for (i = 0; i < filelist_length(from); ++i)
		g_ptr_array_add(filelist->entries,
				g_ptr_array_index(from->entries, i));

	g_ptr_array_set_size(from->entries, 0);
}
Exemple #2
0
void filelist_free( FILELIST * list )
{
    FILELISTITER iter;

    if ( filelist_empty( list ) ) return;

    while ( filelist_length( list ) ) filelist_pop_front( list );

#ifdef BJAM_NO_MEM_CACHE
    BJAM_FREE( list );
#endif
}
Exemple #3
0
void
filelist_free(struct filelist *filelist)
{
	guint i;

	for (i = 0; i < filelist_length(filelist); ++i) {
		struct filelist_entry *entry = filelist_get(filelist, i);

		if (entry->entity)
			mpd_entity_free(entry->entity);

		g_slice_free(struct filelist_entry, entry);
	}

	g_ptr_array_free(filelist->entries, TRUE);
	g_free(filelist);
}
Exemple #4
0
void
filelist_no_duplicates(struct filelist *filelist)
{
	for (int i = filelist_length(filelist) - 1; i >= 0; --i) {
		struct filelist_entry *entry = filelist_get(filelist, i);
		const struct mpd_song *song;

		if (entry->entity == NULL ||
		    mpd_entity_get_type(entry->entity) != MPD_ENTITY_TYPE_SONG)
			continue;

		song = mpd_entity_get_song(entry->entity);
		if (filelist_find_song(filelist, song) < i) {
			g_ptr_array_remove_index(filelist->entries, i);
			mpd_entity_free(entry->entity);
			g_slice_free(struct filelist_entry, entry);
		}
	}
}
Exemple #5
0
int
filelist_find_directory(struct filelist *filelist, const char *name)
{
	guint i;

	assert(name != NULL);

	for (i = 0; i < filelist_length(filelist); ++i) {
		struct filelist_entry *entry = filelist_get(filelist, i);
		const struct mpd_entity *entity  = entry->entity;

		if (entity != NULL &&
		    mpd_entity_get_type(entity) == MPD_ENTITY_TYPE_DIRECTORY &&
		    strcmp(mpd_directory_get_path(mpd_entity_get_directory(entity)),
			   name) == 0)
			return i;
	}

	return -1;
}
Exemple #6
0
int
filelist_find_song(struct filelist *fl, const struct mpd_song *song)
{
	guint i;

	assert(song != NULL);

	for (i = 0; i < filelist_length(fl); ++i) {
		struct filelist_entry *entry = filelist_get(fl, i);
		const struct mpd_entity *entity  = entry->entity;

		if (entity != NULL &&
		    mpd_entity_get_type(entity) == MPD_ENTITY_TYPE_SONG) {
			const struct mpd_song *song2 =
				mpd_entity_get_song(entity);

			if (same_song(song, song2))
				return i;
		}
	}

	return -1;
}