playlist/embcue: ignore "FILE", always point to container song file
An embedded CUE sheet must always point to the song file it is contained in.
This commit is contained in:
parent
df563db294
commit
f8eece22c8
@ -44,6 +44,13 @@
|
|||||||
struct embcue_playlist {
|
struct embcue_playlist {
|
||||||
struct playlist_provider base;
|
struct playlist_provider base;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is an override for the CUE's "FILE". An embedded CUE
|
||||||
|
* sheet must always point to the song file it is contained
|
||||||
|
* in.
|
||||||
|
*/
|
||||||
|
char *filename;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The value of the file's "CUESHEET" tag.
|
* The value of the file's "CUESHEET" tag.
|
||||||
*/
|
*/
|
||||||
@ -97,6 +104,8 @@ embcue_playlist_open_uri(const char *uri,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playlist->filename = g_path_get_basename(uri);
|
||||||
|
|
||||||
playlist->next = playlist->cuesheet;
|
playlist->next = playlist->cuesheet;
|
||||||
playlist->parser = cue_parser_new();
|
playlist->parser = cue_parser_new();
|
||||||
|
|
||||||
@ -110,6 +119,7 @@ embcue_playlist_close(struct playlist_provider *_playlist)
|
|||||||
|
|
||||||
cue_parser_free(playlist->parser);
|
cue_parser_free(playlist->parser);
|
||||||
g_free(playlist->cuesheet);
|
g_free(playlist->cuesheet);
|
||||||
|
g_free(playlist->filename);
|
||||||
g_free(playlist);
|
g_free(playlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,11 +147,14 @@ embcue_playlist_read(struct playlist_provider *_playlist)
|
|||||||
cue_parser_feed(playlist->parser, line);
|
cue_parser_feed(playlist->parser, line);
|
||||||
song = cue_parser_get(playlist->parser);
|
song = cue_parser_get(playlist->parser);
|
||||||
if (song != NULL)
|
if (song != NULL)
|
||||||
return song;
|
return song_replace_uri(song, playlist->filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
cue_parser_finish(playlist->parser);
|
cue_parser_finish(playlist->parser);
|
||||||
return cue_parser_get(playlist->parser);
|
song = cue_parser_get(playlist->parser);
|
||||||
|
if (song != NULL)
|
||||||
|
song = song_replace_uri(song, playlist->filename);
|
||||||
|
return song;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *const embcue_playlist_suffixes[] = {
|
static const char *const embcue_playlist_suffixes[] = {
|
||||||
|
Loading…
Reference in New Issue
Block a user