From df563db29406ee47a9d45ae5a01ef03cc52be478 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 12 Feb 2012 19:47:22 +0100 Subject: [PATCH] song: add function song_replace_uri() --- src/song.c | 12 ++++++++++++ src/song.h | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/src/song.c b/src/song.c index bddf8eb83..f5cc7c35a 100644 --- a/src/song.c +++ b/src/song.c @@ -61,6 +61,18 @@ song_file_new(const char *path, struct directory *parent) return song_alloc(path, parent); } +struct song * +song_replace_uri(struct song *old_song, const char *uri) +{ + struct song *new_song = song_alloc(uri, old_song->parent); + new_song->tag = old_song->tag; + new_song->mtime = old_song->mtime; + new_song->start_ms = old_song->start_ms; + new_song->end_ms = old_song->end_ms; + g_free(old_song); + return new_song; +} + void song_free(struct song *song) { diff --git a/src/song.h b/src/song.h index 95cc2eb86..8b97d45d0 100644 --- a/src/song.h +++ b/src/song.h @@ -74,6 +74,15 @@ song_file_new(const char *path, struct directory *parent); struct song * song_file_load(const char *path, struct directory *parent); +/** + * Replaces the URI of a song object. The given song object is + * destroyed, and a newly allocated one is returned. It does not + * update the reference within the parent directory; the caller is + * responsible for doing that. + */ +struct song * +song_replace_uri(struct song *song, const char *uri); + void song_free(struct song *song);