diff options
author | Max Kellermann <max@duempel.org> | 2012-08-25 10:28:33 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-08-25 10:28:33 +0200 |
commit | def21cc87ef8eb1ee78be1235a2de73ed253fcaf (patch) | |
tree | 056616e05ab4d115c0415abe048a74bd6f6c857c /src/queue_save.c | |
parent | 488c1eb87b1b484da67ea0ccbb360bf1a6968003 (diff) | |
parent | acaa725478ae5e6e4fff9e07cf8637d17d314c41 (diff) | |
download | mpd-def21cc87ef8eb1ee78be1235a2de73ed253fcaf.tar.gz mpd-def21cc87ef8eb1ee78be1235a2de73ed253fcaf.tar.xz mpd-def21cc87ef8eb1ee78be1235a2de73ed253fcaf.zip |
Merge branch 'v0.17.x'
Conflicts:
src/queue_save.c
Diffstat (limited to 'src/queue_save.c')
-rw-r--r-- | src/queue_save.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/queue_save.c b/src/queue_save.c index 0025e26f9..00b5ecbb1 100644 --- a/src/queue_save.c +++ b/src/queue_save.c @@ -24,9 +24,12 @@ #include "uri.h" #include "database.h" #include "song_save.h" +#include "text_file.h" #include <stdlib.h> +#define PRIO_LABEL "Prio: " + static void queue_save_database_song(FILE *fp, int idx, const struct song *song) { @@ -54,8 +57,13 @@ queue_save_song(FILE *fp, int idx, const struct song *song) void queue_save(FILE *fp, const struct queue *queue) { - for (unsigned i = 0; i < queue_length(queue); i++) + for (unsigned i = 0; i < queue_length(queue); i++) { + uint8_t prio = queue_get_priority_at_position(queue, i); + if (prio != 0) + fprintf(fp, PRIO_LABEL "%u\n", prio); + queue_save_song(fp, i, queue_get(queue, i)); + } } static struct song * @@ -75,6 +83,15 @@ queue_load_song(FILE *fp, GString *buffer, const char *line, if (queue_is_full(queue)) return; + uint8_t priority = 0; + if (g_str_has_prefix(line, PRIO_LABEL)) { + priority = strtoul(line + sizeof(PRIO_LABEL) - 1, NULL, 10); + + line = read_text_line(fp, buffer); + if (line == NULL) + return; + } + if (g_str_has_prefix(line, SONG_BEGIN)) { const char *uri = line + sizeof(SONG_BEGIN) - 1; if (!uri_has_scheme(uri) && !g_path_is_absolute(uri)) @@ -102,7 +119,7 @@ queue_load_song(FILE *fp, GString *buffer, const char *line, return; } - queue_append(queue, song); + queue_append(queue, song, priority); if (song_in_database(song)) db_return_song(song); |