diff --git a/lib/driver/_cdio_linux.c b/lib/driver/_cdio_linux.c index e45243c8..16961cd5 100644 --- a/lib/driver/_cdio_linux.c +++ b/lib/driver/_cdio_linux.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_linux.c,v 1.2 2004/12/31 05:47:36 rocky Exp $ + $Id: _cdio_linux.c,v 1.3 2004/12/31 08:27:49 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.2 2004/12/31 05:47:36 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.3 2004/12/31 08:27:49 rocky Exp $"; #include @@ -848,7 +848,7 @@ read_toc_linux (void *p_user_data) return false; } - /** FIXME: Move into generic. **/ + /** FIXME: Do in a more generic place? **/ p_env->gen.track_flags[i].preemphasis = p_toc->cdte_ctrl & 0x1 ? CDIO_TRACK_FLAG_TRUE : CDIO_TRACK_FLAG_FALSE; diff --git a/lib/driver/_cdio_sunos.c b/lib/driver/_cdio_sunos.c index 9bbb61b7..311f5382 100644 --- a/lib/driver/_cdio_sunos.c +++ b/lib/driver/_cdio_sunos.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_sunos.c,v 1.1 2004/12/18 17:29:32 rocky Exp $ + $Id: _cdio_sunos.c,v 1.2 2004/12/31 08:27:49 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -38,7 +38,7 @@ #ifdef HAVE_SOLARIS_CDROM -static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.1 2004/12/18 17:29:32 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.2 2004/12/31 08:27:49 rocky Exp $"; #ifdef HAVE_GLOB_H #include @@ -420,14 +420,28 @@ read_toc_solaris (void *p_user_data) /* read individual tracks */ for (i=p_env->gen.i_first_track; i<=p_env->gen.i_tracks; i++) { - p_env->tocent[i-1].cdte_track = i; - p_env->tocent[i-1].cdte_format = CDIO_CDROM_MSF; - if ( ioctl(p_env->gen.fd, CDROMREADTOCENTRY, &p_env->tocent[i-1]) == -1 ) { + struct cdrom_tocentry *p_toc = + &(p_env->tocent[i-p_env->gen.i_first_track]); + + p_toc->cdte_track = i; + p_toc->cdte_format = CDIO_CDROM_MSF; + if ( ioctl(p_env->gen.fd, CDROMREADTOCENTRY, p_toc) == -1 ) { cdio_warn("%s %d: %s\n", "error in ioctl CDROMREADTOCENTRY for track", i, strerror(errno)); return false; } + + /** FIXME: Do in a more generic place? **/ + p_env->gen.track_flags[i].preemphasis = + p_toc->cdte_ctrl & 0x1 ? CDIO_TRACK_FLAG_TRUE : CDIO_TRACK_FLAG_FALSE; + + p_env->gen.track_flags[i].copy_permit = + p_toc->cdte_ctrl & 0x2 ? CDIO_TRACK_FLAG_TRUE : CDIO_TRACK_FLAG_FALSE; + + p_env->gen.track_flags[i].channels = + p_toc->cdte_ctrl & 0x8 ? 4 : 2; + } /* read the lead-out track */ @@ -846,33 +860,36 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode) cdio_funcs _funcs; - _funcs.eject_media = eject_media_solaris; - _funcs.free = cdio_generic_free; - _funcs.get_arg = get_arg_solaris; - _funcs.get_cdtext = get_cdtext_generic; - _funcs.get_default_device = cdio_get_default_device_solaris; - _funcs.get_devices = cdio_get_devices_solaris; - _funcs.get_discmode = get_discmode_solaris; - _funcs.get_drive_cap = scsi_mmc_get_drive_cap_generic; - _funcs.get_first_track_num= get_first_track_num_generic; - _funcs.get_hwinfo = NULL; - _funcs.get_mcn = scsi_mmc_get_mcn_generic, - _funcs.get_num_tracks = get_num_tracks_generic; - _funcs.get_track_format = get_track_format_solaris; - _funcs.get_track_green = _cdio_get_track_green; - _funcs.get_track_lba = NULL; /* This could be implemented if need be. */ - _funcs.get_track_msf = _cdio_get_track_msf; - _funcs.lseek = cdio_generic_lseek; - _funcs.read = cdio_generic_read; - _funcs.read_audio_sectors = _read_audio_sectors_solaris; - _funcs.read_mode1_sector = _read_mode1_sector_solaris; - _funcs.read_mode1_sectors = _read_mode1_sectors_solaris; - _funcs.read_mode2_sector = _read_mode2_sector_solaris; - _funcs.read_mode2_sectors = _read_mode2_sectors_solaris; - _funcs.read_toc = read_toc_solaris; - _funcs.run_scsi_mmc_cmd = run_scsi_cmd_solaris; - _funcs.stat_size = _cdio_stat_size; - _funcs.set_arg = _set_arg_solaris; + _funcs.eject_media = eject_media_solaris; + _funcs.free = cdio_generic_free; + _funcs.get_arg = get_arg_solaris; + _funcs.get_cdtext = get_cdtext_generic; + _funcs.get_default_device = cdio_get_default_device_solaris; + _funcs.get_devices = cdio_get_devices_solaris; + _funcs.get_discmode = get_discmode_solaris; + _funcs.get_drive_cap = scsi_mmc_get_drive_cap_generic; + _funcs.get_first_track_num = get_first_track_num_generic; + _funcs.get_hwinfo = NULL; + _funcs.get_mcn = scsi_mmc_get_mcn_generic, + _funcs.get_num_tracks = get_num_tracks_generic; + _funcs.get_track_channels = get_track_channels_generic, + _funcs.get_track_copy_permit = get_track_copy_permit_generic, + _funcs.get_track_format = get_track_format_solaris; + _funcs.get_track_green = _cdio_get_track_green; + _funcs.get_track_lba = NULL; /* This could be done if need be. */ + _funcs.get_track_preemphasis = get_track_preemphasis_generic, + _funcs.get_track_msf = _cdio_get_track_msf; + _funcs.lseek = cdio_generic_lseek; + _funcs.read = cdio_generic_read; + _funcs.read_audio_sectors = _read_audio_sectors_solaris; + _funcs.read_mode1_sector = _read_mode1_sector_solaris; + _funcs.read_mode1_sectors = _read_mode1_sectors_solaris; + _funcs.read_mode2_sector = _read_mode2_sector_solaris; + _funcs.read_mode2_sectors = _read_mode2_sectors_solaris; + _funcs.read_toc = read_toc_solaris; + _funcs.run_scsi_mmc_cmd = run_scsi_cmd_solaris; + _funcs.stat_size = _cdio_stat_size; + _funcs.set_arg = _set_arg_solaris; _data = _cdio_malloc (sizeof (_img_private_t)); diff --git a/test/check_cue.sh.in b/test/check_cue.sh.in index b48ec864..2309e8a3 100644 --- a/test/check_cue.sh.in +++ b/test/check_cue.sh.in @@ -1,5 +1,5 @@ #!/bin/sh -#$Id: check_cue.sh.in,v 1.22 2004/12/31 07:51:43 rocky Exp $ +#$Id: check_cue.sh.in,v 1.23 2004/12/31 08:27:49 rocky Exp $ # Tests to see that BIN/CUE and cdrdao TOC file iamge reading is correct # (via cd-info). @@ -72,7 +72,7 @@ if test -f ${srcdir}/${fname}.bin ; then check_result $RC "cd-info CUE test $testnum" "${CD_INFO} $opts" if test -z "@VCDINFO_LIBS@" ; then - right=${srcdir}/${fname}.right + right=${srcdir}/${fname}_toc.right else right=${srcdir}/${fname}_vcdinfo_toc.right fi diff --git a/test/vcd_demo.right b/test/vcd_demo.right index e713010e..dc772761 100644 --- a/test/vcd_demo.right +++ b/test/vcd_demo.right @@ -4,10 +4,10 @@ PARTICULAR PURPOSE. __________________________________ CD-ROM Track List (1 - 3) - #: MSF LSN Type Green? - 1: 00:02:00 000000 XA true - 2: 00:17:57 001182 XA true - 3: 00:24:71 001721 XA true + #: MSF LSN Type Green? Copy? + 1: 00:02:00 000000 XA true yes + 2: 00:17:57 001182 XA true yes + 3: 00:24:71 001721 XA true yes 170: 00:30:10 002110 leadout (4 MB) Media Catalog Number (MCN): not available __________________________________