[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