[vlc-devel] Re: Fixes for CDDB API calls
Derk-Jan Hartman
hartman at videolan.org
Wed Mar 1 14:19:20 CET 2006
applied
On 1-mrt-2006, at 11:06, Alexander Gall wrote:
> The code in modules/access/cdda/info.c accesses structs that don't
> seem to be part of the CDDB API, for example on line 286
>
> psz_meta_title = p_cdda->cddb.disc->title;
>
> where p_cdda->cddb.disc is a struct cddb_disc_s. This struct is
> defined in the header file cddb/cddb_ni.h, which is private to CDDB
> (i.e. it is not part of a CDDB install). These structs should only be
> accessed through the API. In this case
>
> psz_meta_title = (char *)cddb_disc_get_title(p_cdda-
> >cddb.disc);
>
> The modifications are straight forward.
>
> --
> Alex
>
> diff -Naur vlc-0.8.5-20060226.orig/modules/access/cdda/info.c
> vlc-0.8.5-20060226/modules/access/cdda/info.c
> --- vlc-0.8.5-20060226.orig/modules/access/cdda/info.c 2006-02-26
> 00:00:26.000000000 +0100
> +++ vlc-0.8.5-20060226/modules/access/cdda/info.c 2006-02-28
> 11:33:38.047593000 +0100
> @@ -163,13 +163,13 @@
> }
> \
>
> #define add_cddb_meta(FIELD, VLC_META) \
> - add_meta_val(VLC_META, p_cdda->cddb.disc->FIELD);
> + add_meta_val(VLC_META, cddb_disc_get_##FIELD(p_cdda->cddb.disc));
>
> #define add_cddb_meta_fmt(FIELD, FORMAT_SPEC,
> VLC_META) \
>
> {
> \
> char psz_buf
> [100]; \
> snprintf( psz_buf, sizeof(psz_buf)-1,
> FORMAT_SPEC, \
> - p_cdda->cddb.disc-
> >FIELD ); \
> + cddb_disc_get_##FIELD(p_cdda-
> >cddb.disc)); \
> psz_buf[sizeof(psz_buf)-1] =
> '\0'; \
> add_meta_val(VLC_META, psz_buf); \
> }
> @@ -195,13 +195,13 @@
> under category "Disc" if the string is not null or the null
> string.
> */
> #define add_cddb_disc_info_str(TITLE, FIELD) \
> - add_info_str("Disc", TITLE, p_cdda->cddb.disc->FIELD)
> + add_info_str("Disc", TITLE, cddb_disc_get_##FIELD(p_cdda-
> >cddb.disc))
>
> /* Adds a CDDB numeric-valued entry to the stream and media
> information
> under category "Disc" if the string is not null or the null
> string.
> */
> #define add_cddb_disc_info_val(TITLE, FMT, FIELD) \
> - add_info_val("Disc", TITLE, FMT, p_cdda->cddb.disc->FIELD)
> + add_info_val("Disc", TITLE, FMT, cddb_disc_get_##FIELD(p_cdda-
> >cddb.disc))
>
> /* Adds a CD-Text string-valued entry to the stream and media
> information
> under category "Disc" if the string is not null or the null
> string.
> @@ -283,11 +283,12 @@
> if( CDIO_INVALID_TRACK == i_track )
> {
>
> - psz_meta_title = p_cdda->cddb.disc->title;
> - psz_meta_artist = p_cdda->cddb.disc->artist;
> - if ( p_cdda->cddb.disc->genre && strlen(p_cdda->cddb.disc-
> >genre) )
> + psz_meta_title = (char *)cddb_disc_get_title(p_cdda-
> >cddb.disc);
> + psz_meta_artist = (char *)cddb_disc_get_artist(p_cdda-
> >cddb.disc);
> + if ( cddb_disc_get_genre(p_cdda->cddb.disc) &&
> + strlen(cddb_disc_get_genre(p_cdda->cddb.disc)) )
> add_cddb_meta(genre, VLC_META_GENRE);
> - if ( 0 != p_cdda->cddb.disc->year )
> + if ( 0 != cddb_disc_get_year(p_cdda->cddb.disc))
> add_cddb_meta_fmt(year, "%d", VLC_META_DATE );
> }
> else
> @@ -295,13 +296,13 @@
> cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc, i_track-1);
> if (t != NULL )
> {
> - if( t->title != NULL && ! p_cdda->b_nav_mode )
> + if( cddb_track_get_title(t) != NULL && ! p_cdda->b_nav_mode )
> {
> - add_meta_val( VLC_META_TITLE, t->title );
> + add_meta_val( VLC_META_TITLE, cddb_track_get_title(t) );
> }
> - if( t->artist != NULL )
> + if( cddb_track_get_artist(t) != NULL )
> {
> - add_meta_val( VLC_META_ARTIST, t->artist );
> + add_meta_val( VLC_META_ARTIST, cddb_track_get_artist(t) );
> }
> }
> }
> @@ -339,14 +340,14 @@
> if (p_cdda->b_cddb_enabled && p_cdda->cddb.disc)
> {
> add_cddb_disc_info_str("Artist (CDDB)", artist);
> - if ( CDDB_CAT_INVALID != p_cdda->cddb.disc->category )
> + if ( CDDB_CAT_INVALID != cddb_disc_get_category(p_cdda-
> >cddb.disc) )
> add_info_str("Disc", "Category (CDDB)",
> - CDDB_CATEGORY[p_cdda->cddb.disc->category]);
> + CDDB_CATEGORY[cddb_disc_get_category(p_cdda->cddb.disc)]);
> add_cddb_disc_info_val("Disc ID (CDDB)", "%x", discid);
> add_cddb_disc_info_str("Extended Data (CDDB)", ext_data);
> add_cddb_disc_info_str("Genre (CDDB)", genre);
> add_cddb_disc_info_str("Title (CDDB)", title);
> - if ( 0 != p_cdda->cddb.disc->year )
> + if ( 0 != cddb_disc_get_year(p_cdda->cddb.disc) )
> add_cddb_disc_info_val("Year (CDDB)", "%d", year);
>
> }
> @@ -423,10 +424,12 @@
> cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc, i);
> if (t != NULL)
> {
> - add_info_str(psz_track, "Artist (CDDB)", t->artist);
> - add_info_str(psz_track, "Title (CDDB)", t->title);
> + add_info_str(psz_track, "Artist (CDDB)",
> + cddb_track_get_artist(t));
> + add_info_str(psz_track, "Title (CDDB)",
> + cddb_track_get_title(t));
> add_info_str(psz_track, "Extended Data (CDDB)",
> - t->ext_data);
> + cddb_track_get_ext_data(t));
> }
> }
> #endif /*HAVE_LIBCDDB*/
> @@ -566,41 +569,41 @@
> && p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER])
> psz = p_cdda->p_cdtext[0]->field[CDTEXT_PERFORMER];
> if (want_cddb_info(p_cdda, psz))
> - psz = p_cdda->cddb.disc->artist;
> + psz = (char *)cddb_disc_get_artist(p_cdda-
> >cddb.disc);
> goto format_str;
> case 'A':
> if (p_cdda->p_cdtext[0]
> && p_cdda->p_cdtext[0]->field[CDTEXT_TITLE])
> psz = p_cdda->p_cdtext[0]->field[CDTEXT_TITLE];
> if (want_cddb_info(p_cdda, psz))
> - psz = p_cdda->cddb.disc->title;
> + psz = (char *)cddb_disc_get_title(p_cdda->cddb.disc);
> goto format_str;
> case 'C':
> if (!p_cdda->b_cddb_enabled) goto not_special;
> if (p_cdda->cddb.disc)
> - add_format_str_info(
> - CDDB_CATEGORY[p_cdda->cddb.disc-
> >category]);
> + add_format_str_info(CDDB_CATEGORY
> [cddb_disc_get_category(p_cdda->cddb.disc)]);
> break;
> case 'G':
> if (p_cdda->p_cdtext[0]
> && p_cdda->p_cdtext[0]->field[CDTEXT_GENRE])
> psz = p_cdda->p_cdtext[0]->field[CDTEXT_GENRE];
> if (want_cddb_info(p_cdda, psz))
> - psz = p_cdda->cddb.disc->genre;
> + psz = (char *)cddb_disc_get_genre(p_cdda-
> >cddb.disc);
> goto format_str;
> case 'I':
> if (p_cdda->p_cdtext[0]
> && p_cdda->p_cdtext[0]->field[CDTEXT_DISCID])
> psz = p_cdda->p_cdtext[0]->field[CDTEXT_DISCID];
> if (want_cddb_info(p_cdda, psz)) {
> - add_format_num_info(p_cdda->cddb.disc-
> >discid, "%x");
> + add_format_num_info(cddb_disc_get_discid
> (p_cdda->cddb.disc), "%x");
> } else if (psz)
> add_format_str_info(psz);
> break;
> case 'Y':
> if (!p_cdda->b_cddb_enabled) goto not_special;
> if (p_cdda->cddb.disc)
> - add_format_num_info(p_cdda->cddb.disc->year, "%
> 5d");
> + add_format_num_info(cddb_disc_get_year(p_cdda-
> >cddb.disc),
> + "%5d");
> break;
> case 't':
> if ( CDIO_INVALID_TRACK == i_track ) break;
> @@ -608,8 +611,8 @@
> {
> cddb_track_t *t=cddb_disc_get_track(p_cdda-
> >cddb.disc,
> i_track-1);
> - if (t != NULL && t->title != NULL) {
> - add_format_str_info(t->title);
> + if (t != NULL && cddb_track_get_title(t) !=
> NULL) {
> + add_format_str_info(cddb_track_get_title(t));
> } else {
> add_format_str_info(psz_mrl);
> }
> @@ -631,8 +634,8 @@
> {
> cddb_track_t *t=cddb_disc_get_track(p_cdda->cddb.disc,
> i_track-1);
> - if (t != NULL && t->artist != NULL)
> - psz = t->artist;
> + if (t != NULL && cddb_track_get_artist(t) != NULL)
> + psz = (char *)cddb_track_get_artist(t);
> }
> goto format_str;
> case 'e':
> @@ -644,8 +647,8 @@
> {
> cddb_track_t *t=cddb_disc_get_track(p_cdda-
> >cddb.disc,
> i_track-1);
> - if (t != NULL && t->ext_data != NULL)
> - psz = t->ext_data;
> + if (t != NULL && cddb_track_get_ext_data(t) !=
> NULL)
> + psz = (char *)cddb_track_get_ext_data(t);
> }
> goto format_str;
> break;
> @@ -884,15 +887,15 @@
>
> if (t)
> {
> - if (t->artist)
> + if (cddb_track_get_artist(t))
> add_playlist_track_info_str("Artist (CDDB)",
> - t->artist);
> - if (t->title)
> + cddb_track_get_artist
> (t));
> + if (cddb_track_get_title(t))
> add_playlist_track_info_str("Title (CDDB)",
> - t->title);
> - if (t->ext_data)
> + cddb_track_get_title(t));
> + if (cddb_track_get_ext_data(t))
> add_playlist_track_info_str("Extended information
> (CDDB)",
> - t->ext_data);
> + cddb_track_get_ext_data
> (t));
> }
> }
> #endif /*HAVE_LIBCDDB*/
>
> --
> This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
> To unsubscribe, please read http://developers.videolan.org/lists.html
>
>
--
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html
More information about the vlc-devel
mailing list