diff --git a/lib/MSWindows/aspi32.c b/lib/MSWindows/aspi32.c index 87f8e66f..a3d09c03 100644 --- a/lib/MSWindows/aspi32.c +++ b/lib/MSWindows/aspi32.c @@ -1,5 +1,5 @@ /* - $Id: aspi32.c,v 1.16 2004/07/13 03:45:25 rocky Exp $ + $Id: aspi32.c,v 1.17 2004/07/13 03:59:09 rocky Exp $ Copyright (C) 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: aspi32.c,v 1.16 2004/07/13 03:45:25 rocky Exp $"; +static const char _rcsid[] = "$Id: aspi32.c,v 1.17 2004/07/13 03:59:09 rocky Exp $"; #include #include @@ -677,6 +677,15 @@ wnaspi32_eject_media (void *user_data) { } #endif +#define set_cdtext_field(FIELD) \ + if( i_track == 0 ) \ + env->cdtext.field[FIELD] = strdup(buffer); \ + else \ + env->tocent[i_track-1].cdtext.field[FIELD] \ + = strdup(buffer); \ + i_track++; \ + idx = 0; + /*! Return the value associated with the key "arg". */ @@ -739,96 +748,47 @@ get_cdtext_aspi (_img_private_t *env) int j; char buffer[256]; int idx; - int track; + int i_track; memset( buffer, 0x00, sizeof(buffer) ); idx = 0; pdata = (CDText_data_t *) (&bigbuffer[4]); - for( i=0; i<0xFF; i++ ) { + for( i=0; i < CDIO_CDTEXT_MAX_PACK_DATA; i++ ) { if( pdata->seq != i ) break; if( (pdata->type >= 0x80) && (pdata->type <= 0x85) && (pdata->block == 0) ) { - track = pdata->i_track; + i_track = pdata->i_track; - for( j=0; j<12; j++ ) { + for( j=0; j < CDIO_CDTEXT_MAX_TEXT_DATA; j++ ) { if( pdata->text[j] == 0x00 ) { - switch( pdata->type) { + switch( pdata->type) { case CDIO_CDTEXT_TITLE: - if( track == 0 ) - env->cdtext.field[CDTEXT_TITLE] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_TITLE] - = strdup(buffer); - track++; - idx = 0; + set_cdtext_field(CDTEXT_TITLE); break; - - case CDIO_CDTEXT_PERFORMER: // artist - if( track == 0 ) - env->cdtext.field[CDTEXT_PERFORMER] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_PERFORMER] = - strdup(buffer); - track++; - idx = 0; + case CDIO_CDTEXT_PERFORMER: + set_cdtext_field(CDTEXT_PERFORMER); break; case CDIO_CDTEXT_SONGWRITER: - if( track == 0 ) - env->cdtext.field[CDTEXT_SONGWRITER]= strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_SONGWRITER] = - strdup( buffer ); - track++; - idx = 0; + set_cdtext_field(CDTEXT_SONGWRITER); break; case CDIO_CDTEXT_COMPOSER: - if( track == 0 ) - env->cdtext.field[CDTEXT_COMPOSER] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_COMPOSER] = - strdup(buffer); - track++; - idx = 0; + set_cdtext_field(CDTEXT_COMPOSER); break; case CDIO_CDTEXT_ARRANGER: - if( track == 0 ) - env->cdtext.field[CDTEXT_ARRANGER] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_ARRANGER] = - strdup(buffer); - track++; - idx = 0; + set_cdtext_field(CDTEXT_ARRANGER); break; case CDIO_CDTEXT_MESSAGE: - if( track == 0 ) - env->cdtext.field[CDTEXT_MESSAGE] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_MESSAGE] = - strdup(buffer); - track++; - idx = 0; + set_cdtext_field(CDTEXT_MESSAGE); break; case CDIO_CDTEXT_DISCID: - if( track == 0 ) - env->cdtext.field[CDTEXT_DISCID] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_DISCID] = - strdup(buffer); - track++; - idx = 0; + set_cdtext_field(CDTEXT_DISCID); break; case CDIO_CDTEXT_GENRE: - if( track == 0 ) - env->cdtext.field[CDTEXT_GENRE] = strdup(buffer); - else - env->tocent[track-1].cdtext.field[CDTEXT_GENRE] = - strdup(buffer); - track++; - idx = 0; + set_cdtext_field(CDTEXT_GENRE); break; } } @@ -841,7 +801,9 @@ get_cdtext_aspi (_img_private_t *env) pdata++; } } - return NULL; + + env->b_cdtext_init = true; + return &(env->cdtext); } /*! Return the the kind of drive capabilities of device. diff --git a/lib/MSWindows/win32.c b/lib/MSWindows/win32.c index f00da737..d29f5d1a 100644 --- a/lib/MSWindows/win32.c +++ b/lib/MSWindows/win32.c @@ -1,5 +1,5 @@ /* - $Id: win32.c,v 1.18 2004/07/13 03:45:26 rocky Exp $ + $Id: win32.c,v 1.19 2004/07/13 03:59:10 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein @@ -26,7 +26,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: win32.c,v 1.18 2004/07/13 03:45:26 rocky Exp $"; +static const char _rcsid[] = "$Id: win32.c,v 1.19 2004/07/13 03:59:10 rocky Exp $"; #include #include @@ -440,10 +440,10 @@ _get_cdtext_win32 (void *user_data) return &(env->cdtext); if (env->hASPI) { - get_cdtext_aspi(env); + return get_cdtext_aspi(env); } - return &(env->cdtext); + return NULL; } /*!