directory: added directory_lookup_song()

Moved code from db_get_song().
This commit is contained in:
Max Kellermann
2009-04-01 18:41:37 +02:00
parent 36ec2edacf
commit 7f38c3fc78
3 changed files with 41 additions and 25 deletions

View File

@@ -114,6 +114,36 @@ directory_lookup_directory(struct directory *directory, const char *uri)
return found;
}
struct song *
directory_lookup_song(struct directory *directory, const char *uri)
{
char *duplicated, *base;
struct song *song;
assert(directory != NULL);
assert(uri != NULL);
duplicated = g_strdup(uri);
base = strrchr(duplicated, '/');
if (base != NULL) {
*base++ = 0;
directory = directory_lookup_directory(directory, duplicated);
if (directory == NULL) {
g_free(duplicated);
return NULL;
}
} else
base = duplicated;
song = songvec_find(&directory->songs, base);
assert(song == NULL || song->parent == directory);
g_free(duplicated);
return song;
}
void
directory_sort(struct directory *directory)
{