From 7f38c3fc78f7dd3c542cdb73bcd45bfe2208a5a8 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 1 Apr 2009 18:41:37 +0200 Subject: directory: added directory_lookup_song() Moved code from db_get_song(). --- src/directory.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/directory.c') diff --git a/src/directory.c b/src/directory.c index ef2cd1c2c..85c24fd04 100644 --- a/src/directory.c +++ b/src/directory.c @@ -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) { -- cgit v1.2.3