diff --git a/core/tags/artist.c b/core/tags/artist.c index 68f0d668..36397e47 100644 --- a/core/tags/artist.c +++ b/core/tags/artist.c @@ -73,6 +73,11 @@ struct artist *artist_find(const gchar *name) return ARTIST(db_find(&artist_db, name)); } +struct artist *artist_lookup(const gchar *name) +{ + return ARTIST(db_get(&artist_db, name)); +} + struct artist *artist_get(const unsigned int index) { return ARTIST(db_at(&artist_db, index)); diff --git a/include/core/tags/artist.h b/include/core/tags/artist.h index e0f76c88..898ea0c5 100644 --- a/include/core/tags/artist.h +++ b/include/core/tags/artist.h @@ -31,8 +31,13 @@ void artist_db_init(); /* Called to clean up the artist database. */ void artist_db_deinit(); -/* Called to find an artist tag by name. */ +/* + * Called to find an artist tag by name. The difference is that artist_find() + * will allocate a new artiststruct if the requested one doesn't exist yet, + * but library_lookup() will return NULL in this situation. + */ struct artist *artist_find(const gchar *); +struct artist *artist_lookup(const gchar *); /* Called to get an artist tag with a specific index. */ struct artist *artist_get(const unsigned int); diff --git a/tests/core/tags/artist.c b/tests/core/tags/artist.c index c35ad242..ae8bd700 100644 --- a/tests/core/tags/artist.c +++ b/tests/core/tags/artist.c @@ -80,10 +80,12 @@ static void test_artist_db() struct artist *artist; artist_db_init(); + artist = artist_lookup("Koji Kondo"); + test_equal((void *)artist, NULL); artist = artist_find("Koji Kondo"); - test_verify_koji(artist); + test_equal((void *)artist_lookup("Koji Kondo"), (void *)artist); test_equal((void *)artist_find("Koji Kondo"), (void *)artist); test_equal((void *)artist_get(0), (void *)artist); test_equal((void *)artist_get(1), (void *)NULL);