diff --git a/configure.ac b/configure.ac index 2b4e63ea..62b0dde7 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ define(RELEASE_NUM, 73) define(CDIO_VERSION_STR, 0.$1cvs) AC_PREREQ(2.52) -AC_REVISION([$Id: configure.ac,v 1.150 2005/03/17 07:36:09 rocky Exp $])dnl +AC_REVISION([$Id: configure.ac,v 1.151 2005/03/19 06:42:22 rocky Exp $])dnl AC_INIT(libcdio, CDIO_VERSION_STR(RELEASE_NUM)) AC_CONFIG_SRCDIR(src/cd-info.c) @@ -157,6 +157,9 @@ AM_PATH_LIBPOPT(, enable_iso_info=no; enable_iso_read=no]) +AC_DEFINE(LIBCDIO_CONFIG_H, 1, + [Is set when libcdio's config.h has been included. Applications wishing to sue their own config.h values (such as set by the application's configure script can define this before including any of libcdio's headers.]) + dnl headers AC_HEADER_STDC @@ -587,6 +590,7 @@ chmod +x test/check_nrg.sh chmod +x test/check_cue.sh chmod +x test/check_iso.sh chmod +x test/check_paranoia.sh +cp config.h include/cdio/cdio_config.h ]],[[]]) AC_OUTPUT diff --git a/example/audio.c b/example/audio.c index d3989501..535504c7 100644 --- a/example/audio.c +++ b/example/audio.c @@ -1,5 +1,5 @@ /* - $Id: audio.c,v 1.3 2005/03/16 02:19:20 rocky Exp $ + $Id: audio.c,v 1.4 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -464,11 +464,8 @@ main(int argc, char *argv[]) sub.audio_status == CDIO_MMC_READ_SUB_ST_PLAY) { { printf("track %2d - %02d:%02d (%02d:%02d abs) ", - sub.track, - sub.rel_addr.msf.m, - sub.rel_addr.msf.s, - sub.abs_addr.msf.m, - sub.abs_addr.msf.s); + sub.track, sub.rel_addr.m, sub.rel_addr.s, + sub.abs_addr.m, sub.abs_addr.s); } } printf("drive state: %s\n", diff --git a/include/cdio/.cvsignore b/include/cdio/.cvsignore index 9ba20bcc..710da8eb 100644 --- a/include/cdio/.cvsignore +++ b/include/cdio/.cvsignore @@ -1,3 +1,5 @@ Makefile Makefile.in version.h +cdio_config.h + diff --git a/include/cdio/Makefile.am b/include/cdio/Makefile.am index 7da1143e..88bfaca3 100644 --- a/include/cdio/Makefile.am +++ b/include/cdio/Makefile.am @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.23 2005/03/01 00:41:34 rocky Exp $ +# $Id: Makefile.am,v 1.24 2005/03/19 06:42:24 rocky Exp $ # # Copyright (C) 2003, 2004 Rocky Bernstein # @@ -29,6 +29,7 @@ libcdioinclude_HEADERS = \ paranoia.h \ cdda.h \ cdio.h \ + cdio_config.h \ cdtext.h \ cdtext.h \ cd_types.h \ @@ -52,3 +53,4 @@ libcdioinclude_HEADERS = \ EXTRA_DIST = version.h.in BUILT_SOURCES = version.h +MOSTLYCLEANFILES = cdio_config.h diff --git a/include/cdio/audio.h b/include/cdio/audio.h index d656d082..73ecd386 100644 --- a/include/cdio/audio.h +++ b/include/cdio/audio.h @@ -1,5 +1,5 @@ /* -*- c -*- - $Id: audio.h,v 1.8 2005/03/14 02:02:49 rocky Exp $ + $Id: audio.h,v 1.9 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -36,14 +36,14 @@ extern "C" { /*! This struct is used by the cdio_audio_read_subchannel */ typedef struct cdio_subchannel_s { - uint8_t format; - uint8_t audio_status; - uint8_t address: 4; - uint8_t control: 4; - uint8_t track; - uint8_t index; - union cdio_cdrom_addr abs_addr; - union cdio_cdrom_addr rel_addr; + uint8_t format; + uint8_t audio_status; + uint8_t address: 4; + uint8_t control: 4; + uint8_t track; + uint8_t index; + msf_t abs_addr; + msf_t rel_addr; } cdio_subchannel_t; /*! This struct is used by cdio_audio_get_volume and cdio_audio_set_volume */ diff --git a/include/cdio/types.h b/include/cdio/types.h index e291659c..e53681b4 100644 --- a/include/cdio/types.h +++ b/include/cdio/types.h @@ -1,5 +1,5 @@ /* - $Id: types.h,v 1.29 2005/03/18 01:15:49 rocky Exp $ + $Id: types.h,v 1.30 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2000 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein @@ -31,6 +31,10 @@ extern "C" { #endif /* __cplusplus */ +#ifndef LIBCDIO_CONFIG_H +#include +#endif + /* provide some C99 definitions */ #if defined(HAVE_SYS_TYPES_H) diff --git a/lib/driver/FreeBSD/freebsd.c b/lib/driver/FreeBSD/freebsd.c index 5d5fbbd9..407d7630 100644 --- a/lib/driver/FreeBSD/freebsd.c +++ b/lib/driver/FreeBSD/freebsd.c @@ -1,5 +1,5 @@ /* - $Id: freebsd.c,v 1.24 2005/03/17 15:32:27 rocky Exp $ + $Id: freebsd.c,v 1.25 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2003, 2004, 2005 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: freebsd.c,v 1.24 2005/03/17 15:32:27 rocky Exp $"; +static const char _rcsid[] = "$Id: freebsd.c,v 1.25 2005/03/19 06:42:24 rocky Exp $"; #include "freebsd.h" @@ -361,16 +361,23 @@ audio_read_subchannel_freebsd (void *p_user_data, struct cd_sub_channel_info bsdinfo; i_rc = ioctl(p_env->gen.fd, CDIOCREADSUBCHANNEL, &bsdinfo); if (0 == i_rc) { - /*p_subchannel*/ + msf_t msf; p_subchannel->audio_status = bsdinfo.header.audio_status; p_subchannel->address = bsdinfo.what.position.addr_type; + p_subchannel->control = bsdinfo.what.position.control; p_subchannel->track = bsdinfo.what.position.track_number; p_subchannel->index = bsdinfo.what.position.index_number; - memcpy(&(p_subchannel->abs_addr), &bsdinfo.what.position.absaddr.lba, - sizeof(cdio_subchannel_t)); - memcpy(&(p_subchannel->rel_addr), &bsdinfo.what.position.reladdr.lba, - sizeof(cdio_subchannel_t)); + + cdio_lba_to_msf(bsdinfo.what.position.absaddr.lba, &msf); + p_subchannel->abs_addr.m = cdio_from_bcd8 (msf.m); + p_subchannel->abs_addr.s = cdio_from_bcd8 (msf.s); + p_subchannel->abs_addr.f = cdio_from_bcd8 (msf.f); + + cdio_lsn_to_msf(bsdinfo.what.position.reladr.lba, &msf); + p_subchannel->rel_addr.m = cdio_from_bcd8 (msf.m); + p_subchannel->rel_addr.s = cdio_from_bcd8 (msf.s); + p_subchannel->rel_addr.f = cdio_from_bcd8 (msf.f); } return i_rc; } @@ -463,7 +470,6 @@ get_arg_freebsd (void *user_data, const char key[]) */ static char * get_mcn_freebsd (const void *p_user_data) { - const _img_private_t *p_env = p_user_data; return (p_env->access_mode == _AM_IOCTL) diff --git a/lib/driver/MSWindows/win32_ioctl.c b/lib/driver/MSWindows/win32_ioctl.c index 3875af69..52301509 100644 --- a/lib/driver/MSWindows/win32_ioctl.c +++ b/lib/driver/MSWindows/win32_ioctl.c @@ -1,5 +1,5 @@ /* - $Id: win32_ioctl.c,v 1.24 2005/03/17 19:41:16 rocky Exp $ + $Id: win32_ioctl.c,v 1.25 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2004, 2005 Rocky Bernstein @@ -26,7 +26,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: win32_ioctl.c,v 1.24 2005/03/17 19:41:16 rocky Exp $"; +static const char _rcsid[] = "$Id: win32_ioctl.c,v 1.25 2005/03/19 06:42:24 rocky Exp $"; #ifdef HAVE_WIN32_CDROM @@ -219,12 +219,12 @@ audio_read_subchannel_win32ioctl (void *p_user_data, const UCHAR *rel_addr = q_subchannel_data.CurrentPosition.TrackRelativeAddress; - p_subchannel->abs_addr.msf.m = abs_addr[1]; - p_subchannel->abs_addr.msf.s = abs_addr[2]; - p_subchannel->abs_addr.msf.f = abs_addr[3]; - p_subchannel->rel_addr.msf.m = rel_addr[1]; - p_subchannel->rel_addr.msf.s = rel_addr[2]; - p_subchannel->rel_addr.msf.f = rel_addr[3]; + p_subchannel->abs_addr.m = abs_addr[1]; + p_subchannel->abs_addr.s = abs_addr[2]; + p_subchannel->abs_addr.f = abs_addr[3]; + p_subchannel->rel_addr.m = rel_addr[1]; + p_subchannel->rel_addr.s = rel_addr[2]; + p_subchannel->rel_addr.f = rel_addr[3]; } return DRIVER_OP_SUCCESS; diff --git a/lib/driver/bsdi.c b/lib/driver/bsdi.c index 8a06c96d..6085084d 100644 --- a/lib/driver/bsdi.c +++ b/lib/driver/bsdi.c @@ -1,5 +1,5 @@ /* - $Id: bsdi.c,v 1.5 2005/03/18 22:53:48 rocky Exp $ + $Id: bsdi.c,v 1.6 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: bsdi.c,v 1.5 2005/03/18 22:53:48 rocky Exp $"; +static const char _rcsid[] = "$Id: bsdi.c,v 1.6 2005/03/19 06:42:24 rocky Exp $"; #include #include @@ -335,14 +335,14 @@ audio_read_subchannel_bsdi (void *p_user_data, cdio_subchannel_t *p_subchannel) p_subchannel->index = cdstat.index_num; cdio_lba_to_msf(cdstat.abs_frame, &msf); - p_subchannel->abs_addr.msf.m = cdio_from_bcd8 (msf.m); - p_subchannel->abs_addr.msf.s = cdio_from_bcd8 (msf.s); - p_subchannel->abs_addr.msf.f = cdio_from_bcd8 (msf.f); + p_subchannel->abs_addr.m = cdio_from_bcd8 (msf.m); + p_subchannel->abs_addr.s = cdio_from_bcd8 (msf.s); + p_subchannel->abs_addr.f = cdio_from_bcd8 (msf.f); cdio_lsn_to_msf(cdstat.rel_frame, &msf); - p_subchannel->rel_addr.msf.m = cdio_from_bcd8 (msf.m); - p_subchannel->rel_addr.msf.s = cdio_from_bcd8 (msf.s); - p_subchannel->rel_addr.msf.f = cdio_from_bcd8 (msf.f); + p_subchannel->rel_addr.m = cdio_from_bcd8 (msf.m); + p_subchannel->rel_addr.s = cdio_from_bcd8 (msf.s); + p_subchannel->rel_addr.f = cdio_from_bcd8 (msf.f); switch(cdstat.state) { case cdstate_unknown: diff --git a/lib/driver/mmc.c b/lib/driver/mmc.c index 37c8c857..dc31a11d 100644 --- a/lib/driver/mmc.c +++ b/lib/driver/mmc.c @@ -1,6 +1,6 @@ /* Common Multimedia Command (MMC) routines. - $Id: mmc.c,v 1.22 2005/03/09 10:23:03 rocky Exp $ + $Id: mmc.c,v 1.23 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2004, 2005 Rocky Bernstein @@ -602,18 +602,18 @@ mmc_audio_read_subchannel (CdIo_t *p_cdio, cdio_subchannel_t *p_subchannel) i_rc = mmc_run_cmd(p_cdio, DEFAULT_TIMEOUT_MS, &cdb, SCSI_MMC_DATA_READ, sizeof(mmc_subchannel_t), &mmc_subchannel); if (DRIVER_OP_SUCCESS == i_rc) { - p_subchannel->format = mmc_subchannel.format; - p_subchannel->audio_status = mmc_subchannel.audio_status; - p_subchannel->address = mmc_subchannel.address; - p_subchannel->control = mmc_subchannel.control; - p_subchannel->track = mmc_subchannel.track; - p_subchannel->index = mmc_subchannel.index; - p_subchannel->abs_addr.msf.m = mmc_subchannel.abs_addr[1]; - p_subchannel->abs_addr.msf.s = mmc_subchannel.abs_addr[2]; - p_subchannel->abs_addr.msf.f = mmc_subchannel.abs_addr[3]; - p_subchannel->rel_addr.msf.m = mmc_subchannel.rel_addr[1]; - p_subchannel->rel_addr.msf.s = mmc_subchannel.rel_addr[2]; - p_subchannel->rel_addr.msf.f = mmc_subchannel.rel_addr[3]; + p_subchannel->format = mmc_subchannel.format; + p_subchannel->audio_status = mmc_subchannel.audio_status; + p_subchannel->address = mmc_subchannel.address; + p_subchannel->control = mmc_subchannel.control; + p_subchannel->track = mmc_subchannel.track; + p_subchannel->index = mmc_subchannel.index; + p_subchannel->abs_addr.m = mmc_subchannel.abs_addr[1]; + p_subchannel->abs_addr.s = mmc_subchannel.abs_addr[2]; + p_subchannel->abs_addr.f = mmc_subchannel.abs_addr[3]; + p_subchannel->rel_addr.m = mmc_subchannel.rel_addr[1]; + p_subchannel->rel_addr.s = mmc_subchannel.rel_addr[2]; + p_subchannel->rel_addr.f = mmc_subchannel.rel_addr[3]; } return i_rc; } diff --git a/src/cd-info.c b/src/cd-info.c index 003eec89..2e811216 100644 --- a/src/cd-info.c +++ b/src/cd-info.c @@ -1,5 +1,5 @@ /* - $Id: cd-info.c,v 1.136 2005/03/18 12:56:00 rocky Exp $ + $Id: cd-info.c,v 1.137 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2003, 2004, 2005 Rocky Bernstein Copyright (C) 1996, 1997, 1998 Gerd Knorr @@ -1092,10 +1092,10 @@ main(int argc, const char *argv[]) if (b_position) report( stdout, " at: %02d:%02d abs / %02d:%02d track %d\n", - subchannel.abs_addr.msf.m, - subchannel.abs_addr.msf.s, - subchannel.rel_addr.msf.m, - subchannel.rel_addr.msf.s, + subchannel.abs_addr.m, + subchannel.abs_addr.s, + subchannel.rel_addr.m, + subchannel.rel_addr.s, subchannel.track ); if (b_volume) { diff --git a/src/cdda-player.c b/src/cdda-player.c index 4606c3ea..eadeb728 100644 --- a/src/cdda-player.c +++ b/src/cdda-player.c @@ -1,5 +1,5 @@ /* - $Id: cdda-player.c,v 1.19 2005/03/18 15:42:25 rocky Exp $ + $Id: cdda-player.c,v 1.20 2005/03/19 06:42:24 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -550,7 +550,7 @@ skip(int diff) if (!b_cd || i_first_track == CDIO_CDROM_LEADOUT_TRACK) return; - sec = cdio_audio_get_msf_seconds(&sub.abs_addr.msf); + sec = cdio_audio_get_msf_seconds(&sub.abs_addr); sec += diff; if (sec < 0) sec = 0; @@ -607,24 +607,17 @@ display_status(bool b_status_only) uint8_t i_level = audio_volume.level[i_vol_port]; sprintf(line, "track %2d - %02d:%02d of %s (%02d:%02d abs) %s volume: %d", - sub.track, - sub.rel_addr.msf.m, - sub.rel_addr.msf.s, + sub.track, sub.rel_addr.m, sub.rel_addr.s, cd_info[sub.track].length, - sub.abs_addr.msf.m, - sub.abs_addr.msf.s, + sub.abs_addr.m, sub.abs_addr.s, mmc_audio_state2str(sub.audio_status), (i_level*100+128) / 256 ); } else sprintf(line,"track %2d - %02d:%02d of %s (%02d:%02d abs) %s", - sub.track, - sub.rel_addr.msf.m, - sub.rel_addr.msf.s, - cd_info[sub.track].length, - sub.abs_addr.msf.m, - sub.abs_addr.msf.s, - mmc_audio_state2str(sub.audio_status)); + sub.track, sub.rel_addr.m, sub.rel_addr.s, + cd_info[sub.track].length, sub.abs_addr.m, sub.abs_addr.s, + mmc_audio_state2str(sub.audio_status)); } else { sprintf(line,"%s", mmc_audio_state2str(sub.audio_status)); @@ -1403,11 +1396,8 @@ main(int argc, char *argv[]) sub.audio_status == CDIO_MMC_READ_SUB_ST_PLAY) { { printf("track %2d - %02d:%02d (%02d:%02d abs) ", - sub.track, - sub.rel_addr.msf.m, - sub.rel_addr.msf.s, - sub.abs_addr.msf.m, - sub.abs_addr.msf.s); + sub.track, sub.rel_addr.m, sub.rel_addr.s, + sub.abs_addr.m, sub.abs_addr.s); } } printf("drive state: %s\n",