Commit 4b36af4a authored by Max Kellermann's avatar Max Kellermann

tag: add attribute "has_playlist"

parent 4a23a4bf
......@@ -100,6 +100,13 @@ song_load(FILE *fp, struct directory *parent, const char *uri,
}
song->tag->time = atoi(value);
} else if (strcmp(line, "Playlist") == 0) {
if (!song->tag) {
song->tag = tag_new();
tag_begin_add(song->tag);
}
song->tag->has_playlist = strcmp(value, "yes") == 0;
} else if (strcmp(line, SONG_MTIME) == 0) {
song->mtime = atoi(value);
} else if (strcmp(line, "Range") == 0) {
......
......@@ -158,6 +158,7 @@ struct tag *tag_new(void)
struct tag *ret = g_new(struct tag, 1);
ret->items = NULL;
ret->time = -1;
ret->has_playlist = false;
ret->num_items = 0;
return ret;
}
......@@ -226,6 +227,7 @@ struct tag *tag_dup(const struct tag *tag)
ret = tag_new();
ret->time = tag->time;
ret->has_playlist = tag->has_playlist;
ret->num_items = tag->num_items;
ret->items = ret->num_items > 0 ? g_malloc(items_size(tag)) : NULL;
......
......@@ -88,6 +88,12 @@ struct tag {
*/
int time;
/**
* Does this file have an embedded playlist (e.g. embedded CUE
* sheet)?
*/
bool has_playlist;
/** an array of tag items */
struct tag_item **items;
......
......@@ -28,6 +28,9 @@ void tag_save(FILE *file, const struct tag *tag)
if (tag->time >= 0)
fprintf(file, SONG_TIME "%i\n", tag->time);
if (tag->has_playlist)
fprintf(file, "Playlist: yes\n");
for (unsigned i = 0; i < tag->num_items; i++)
fprintf(file, "%s: %s\n",
tag_item_names[tag->items[i]->type],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment