summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-sound/cmus/files/cmus-2.5.0-cdio-make-it-work-with-libcdio-0.90.patch')
-rw-r--r--media-sound/cmus/files/cmus-2.5.0-cdio-make-it-work-with-libcdio-0.90.patch100
1 files changed, 100 insertions, 0 deletions
diff --git a/media-sound/cmus/files/cmus-2.5.0-cdio-make-it-work-with-libcdio-0.90.patch b/media-sound/cmus/files/cmus-2.5.0-cdio-make-it-work-with-libcdio-0.90.patch
new file mode 100644
index 000000000000..ace57bf075cb
--- /dev/null
+++ b/media-sound/cmus/files/cmus-2.5.0-cdio-make-it-work-with-libcdio-0.90.patch
@@ -0,0 +1,100 @@
+From 70c727022dcfd802de0d621255ab1a366a50c434 Mon Sep 17 00:00:00 2001
+From: Gregory Petrosyan <gregory.petrosyan@gmail.com>
+Date: Mon, 28 Jan 2013 16:13:40 +0400
+Subject: [PATCH] cdio: make it work with libcdio 0.90+
+
+Signed-off-by: Gregory Petrosyan <gregory.petrosyan@gmail.com>
+---
+ 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 <cdio/cdda.h>
+ #include <cdio/cdio.h>
+ #include <cdio/logging.h>
++#if LIBCDIO_VERSION_NUM >= 90
++#include <cdio/paranoia/cdda.h>
++#else
++#include <cdio/cdda.h>
++#endif
++
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -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
+