/* $Id: do_display.c,v 1.9 2006/10/15 06:50:15 airborne Exp $ Copyright (C) 2003, 2004, 2005 Kris Verbeeck This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "main.h" #ifdef HAVE_STRINGS_H #include #endif #ifdef HAVE_STRING_H #include /* strlen */ #endif #define STR_OR_NULL(s) ((s) ? s : "(null)") void do_display(cddb_disc_t *disc) { cddb_track_t *track = NULL; /* libcddb track structure */ int length; const char *s; /* 1. The artist name, disc title and extended data. */ printf("Artist: %s\n", STR_OR_NULL(cddb_disc_get_artist(disc))); printf("Title: %s\n", STR_OR_NULL(cddb_disc_get_title(disc))); s = cddb_disc_get_ext_data(disc); if (s) { printf("Ext.data: %s\n", s); } /* 2. The music genre. This field is similar to the category field initialized above. It can be the same but it does not have to be. The category can only be come from a set of CDDB predefined categories. The genre can be any string. */ printf("Genre: %s\n", STR_OR_NULL(cddb_disc_get_genre(disc))); /* 3. The disc year. */ printf("Year: %d\n", cddb_disc_get_year(disc)); /* 4. The disc length and the number of tracks. The length field is given in seconds. */ length = cddb_disc_get_length(disc); printf("Length: %d:%02d (%d seconds)\n", (length / 60), (length % 60), length); printf("%d tracks\n", cddb_disc_get_track_count(disc)); /* 5. The tracks. Track iteration can either be done by counting from 0 to (track_count - 1) and using the cddb_disc_get_track function. Or by using the built-in iterator functions cddb_disc_get_track_first and cddb_disc_get_track_next. We'll use the latter approach in this example. */ for (track = cddb_disc_get_track_first(disc); track != NULL; track = cddb_disc_get_track_next(disc)) { /* 5.a. The track number on the disc. This track number starts counting at 1. So this is not the same number as the one used in cddb_disc_get_track. */ printf(" [%02d]", cddb_track_get_number(track)); /* 5.b. The track artist name and title. */ printf(" '%s'", cddb_track_get_title(track)); s = cddb_track_get_artist(track); if (s) { printf(" by %s", s); } /* 5.c. The track length. */ length = cddb_track_get_length(track); if (length != -1) { printf(" (%d:%02d)", (length / 60), (length % 60)); } else { printf(" (unknown)"); } /* 5.d. The extended track data. */ s = cddb_track_get_ext_data(track); if (s) { printf(" [%s]\n", s); } else { printf("\n"); } } }