From 70c727022dcfd802de0d621255ab1a366a50c434 Mon Sep 17 00:00:00 2001 From: Gregory Petrosyan Date: Mon, 28 Jan 2013 16:13:40 +0400 Subject: [PATCH] cdio: make it work with libcdio 0.90+ Signed-off-by: Gregory Petrosyan --- cdio.c | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/cdio.c b/cdio.c index b88983a..b248b3a 100644 --- a/cdio.c +++ b/cdio.c @@ -27,9 +27,14 @@ #include "comment.h" #include "discid.h" -#include #include #include +#if LIBCDIO_VERSION_NUM >= 90 +#include +#else +#include +#endif + #include #include #include @@ -352,24 +357,47 @@ static int libcdio_read_comments(struct input_plugin_data *ip_data, struct keyva GROWING_KEYVALS(c); const char *artist = NULL, *albumartist = NULL, *album = NULL, *title = NULL, *genre = NULL, *comment = NULL; - const cdtext_t *cdtext_track, *cdtext_album; + int track_comments_found = 0; + const cdtext_t *cdt; #ifdef HAVE_CDDB cddb_conn_t *cddb_conn = NULL; cddb_disc_t *cddb_disc = NULL; #endif char buf[64]; - cdtext_track = cdio_get_cdtext(priv->cdio, priv->track); - if (cdtext_track) { - char * const *field = cdtext_track->field; +#if LIBCDIO_VERSION_NUM >= 90 + cdt = cdio_get_cdtext(priv->cdio); + if (cdt) { + artist = cdtext_get(cdt, CDTEXT_FIELD_PERFORMER, priv->track); + title = cdtext_get(cdt, CDTEXT_FIELD_TITLE, priv->track); + genre = cdtext_get(cdt, CDTEXT_FIELD_GENRE, priv->track); + comment = cdtext_get(cdt, CDTEXT_FIELD_MESSAGE, priv->track); + + if (title) + track_comments_found = 1; + + album = cdtext_get(cdt, CDTEXT_FIELD_TITLE, 0); + albumartist = cdtext_get(cdt, CDTEXT_FIELD_PERFORMER, 0); + if (!artist) + artist = albumartist; + if (!genre) + genre = cdtext_get(cdt, CDTEXT_FIELD_GENRE, 0); + if (!comment) + comment = cdtext_get(cdt, CDTEXT_FIELD_MESSAGE, 0); + } +#else + cdt = cdio_get_cdtext(priv->cdio, priv->track); + if (cdt) { + track_comments_found = 1; + char * const *field = cdt->field; artist = field[CDTEXT_PERFORMER]; title = field[CDTEXT_TITLE]; genre = field[CDTEXT_GENRE]; comment = field[CDTEXT_MESSAGE]; } - cdtext_album = cdio_get_cdtext(priv->cdio, 0); - if (cdtext_album) { - char * const *field = cdtext_album->field; + cdt = cdio_get_cdtext(priv->cdio, 0); + if (cdt) { + char * const *field = cdt->field; album = field[CDTEXT_TITLE]; albumartist = field[CDTEXT_PERFORMER]; if (!artist) @@ -379,9 +407,10 @@ static int libcdio_read_comments(struct input_plugin_data *ip_data, struct keyva if (!comment) comment = field[CDTEXT_MESSAGE]; } +#endif #ifdef HAVE_CDDB - if (!cdtext_track && cddb_url && cddb_url[0]) { + if (!track_comments_found && cddb_url && cddb_url[0]) { cddb_track_t *cddb_track; track_t i_tracks = cdio_get_num_tracks(priv->cdio); track_t i_first_track = cdio_get_first_track_num(priv->cdio); -- 1.8.2.1