diff options
author | Max Kellermann <max@duempel.org> | 2012-02-12 19:47:22 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-02-12 19:48:02 +0100 |
commit | df563db29406ee47a9d45ae5a01ef03cc52be478 (patch) | |
tree | e9664f137629756974427f5d144bc68437e0d301 | |
parent | 01b0d9eb975278a3f8c06ca7de01b8d80519df4a (diff) | |
download | mpd-df563db29406ee47a9d45ae5a01ef03cc52be478.tar.gz mpd-df563db29406ee47a9d45ae5a01ef03cc52be478.tar.xz mpd-df563db29406ee47a9d45ae5a01ef03cc52be478.zip |
song: add function song_replace_uri()
-rw-r--r-- | src/song.c | 12 | ||||
-rw-r--r-- | src/song.h | 9 |
2 files changed, 21 insertions, 0 deletions
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); |