tag: add attribute "has_playlist"

This commit is contained in:
Max Kellermann 2012-02-12 18:19:12 +01:00
parent 4a23a4bfee
commit 4b36af4a34
4 changed files with 18 additions and 0 deletions

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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],